WPF und DirectX-11-über D3DImage
Möchte ich DirectX 11 aus nicht verwaltetem C++ - code, und verwenden Sie Windows-DATEISCHUTZ für die GUI. SlimDX ist nicht geeignet für mich.
Ich habe die Lösung gefunden, dass das arbeiten mit WPF DirectX 10:
WPF & DirectX 10 über D3DImage
Aber ich konnte nicht verwalten, um es mit DirectX 11. Nur schwarzer Bildschirm mit zwei buttons.
Weiß jemand, wie man WPF arbeiten mit DirectX 11.
Zudem hatte ich gesehen, dass wenn ich nur dieses Beispiel ausführen, die CPU-Auslastung ist etwa 4-5% für Intel i5 750 (Windows 7 64-bit, NVidia Geforce 430). Ich denke, es ist zu viel.. Ist es möglich, verringern Sie die CPU-Auslastung ?
Finden Sie meinen code hier: http://www.gamedev.net/topic/619534-wpf-directx-11-via-d3dimage/
Sie finden meinen code hier: gamedev.net/topic/619534-wpf-directx-11-via-d3dimage
InformationsquelleAutor Alex | 2012-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich verwendet ein Falsches format für die vertex-buffer-layout. Ich verwendet DXGI_FORMAT_B8G8R8A8_UNORM, aber verwenden DXGI_FORMAT_R32G32B32_FLOAT in meinem Fall.
InformationsquelleAutor Alex
Ihnen fehlt ein Aufruf von D3DImage.AddDirtyRect. Nach dem Rendern Sie Ihre Szene mit Direct3D11, Sie müssen sagen, WPF, es ist ein neues Bild bereit, gezeigt zu werden. Um das zu tun, führen Sie die folgenden, wo d3dimage ist Ihre D3DImage Beispiel:
Dies getan werden muss, um jeden frame.
Weitere Infos über AddDirtyRect
InformationsquelleAutor Patrick Lafferty
Ich kann nicht kommentieren, wie man DirectX 11 arbeiten mit diesem Beispiel, aber die 5% CPU-Sie erleben ist wahrscheinlich die render-Schleife in DirectX Spinnerei, sondern mit der Arbeit nicht zu tun.
Render-Schleife wird Häufig verwendet, in spielen, Rendern "so schnell wie du kannst" während der Aktualisierung der Szene/Physik/KI in einem anderen thread. Im desktop-Visualisierungs-Anwendungen ist dies meist nicht notwendig ist.
Für wissenschaftliche Visualisierung Anwendungen, bei denen updates an der GUI nur auftreten, wenn der Benutzer interagiert (z.B. zieht ein Element, Pfannen viewport) habe ich neu gestaltet, um die render-Schleife, um nur leisten, wenn es ein update gibt. sprich: nach der Arbeit zum verschieben des Viewports innerhalb mousemove, zwingen Sie DirectX neu zu zeichnen, indem Sie ein flag oder ähnliches. Auf diese Weise "zeichnen, wenn Sie es brauchen" reduzieren Sie Ihre CPU in der Nähe von null, während sich die Anwendung im Leerlauf und ist geeignet für desktop-Anwendungen.
InformationsquelleAutor Dr. ABT