Frage

Ich weiß Mischen OpenGL und DirectX wird nicht empfohlen, aber ich versuche, eine Brücke zwischen zwei verschiedenen Anwendungen zu erstellen, dem separaten Grafik-API verwenden: s und ich hoffe, es ist eine Technik zur gemeinsamen Nutzung von Daten, speziell Texturen

Ich habe eine Textur, die in Direct3D wie folgt erstellt:

d3_device-> CreateTexture(width, height,
  1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT,
  &texture, NULL);

Gibt es eine Möglichkeit, diese Textur von OpenGL verwenden kann, ohne dass eine Rundreise durch den Systemspeicher zu nehmen?

War es hilfreich?

Lösung

Nein.

Denken Sie daran, wie ein Bild in Photoshop zu teilen und einen anderen Bildbetrachter. Sie würden eine Speicherverwaltungs Bibliothek benötigen, die diese beiden Anwendungen gemeinsam genutzt.

Andere Tipps

JA. Wie bereits veröffentlicht (siehe unten) dort sollte es mindestens eine Lösung. Ich fand zwei mögliche Lösungen:

1) Auf nvidia Karten eine neue Erweiterung wurde in dem 256 dirvers integriert. finden Sie unter http://developer.download.nvidia.com/opengl/specs/WGL_NV_DX_interop. txt

2) DXGI ist die treibende Kraft, um Verbund alle Fenster in Vista und Windows 7. siehe msdn.microsoft.com/en-us/library/ee913554.aspx

Ich habe noch nicht Erfahrung mit entweder Lösung, aber ich hoffe, dass ich einige Zeit, eine von ihnen zu testen. Aber für mich die erste scheint das einfacher zu sein.


[Ich denke, es sollte möglich sein. In der letzten Windows-Version (Vista und 7) kann man eine Vorschau auf jeden Fensterinhalt in der Taskleiste (ob seine GDI, Direct3D oder OpenGL) sehen. Mein Wissen wurde OpenGL Vorschau nicht in früheren Windows-Versionen unterstützt. So zumindest in der neueren Version sollte es eine Möglichkeit zu koppeln oder sogar zwischen verschiedenen Prozessen machen Kontexte teilen ... Dies ist für andere moderne Plattformen auch wahr, die Kontexte System übertragen teilen breit auf verschiedene Rendering-Effekte zu machen.]

Ich denke, es ist nicht möglich. Da beide haben unterschiedliche Modelle einer Textur.

Sie können nicht die Texturspeicher ohne entweder directX oder openGL direkt zugreifen.

Otherway um: Wenn es möglich ist, sollten Sie in der Lage sein, die Textur-Adresse, die Tonhöhe, Breite und andere (hardwareabhängig) Speicherlayout Informationen abzurufen und eine dummytexture in dem anderen System erstellen und die abgerufenen Daten in denen nur schieben erstelltes Textur-Objekt. Dies ist nicht möglich

Offensichtlich ist dies nicht auf jeder absteigen Hardware arbeiten, und wenn ja, wäre es nicht sehr portabel sein.

Ich glaube nicht, es möglich ist, ohne die Daten in Host-Speicher heruntergeladen und in Gerätespeicher erneut hochgeladen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top