質問

OpenGLとDirectXを混在させることはお勧めできませんが、別々のグラフィックスAPIを使用する2つの異なるアプリケーション間にブリッジを構築しようとしています。データ、特にテクスチャを共有する手法があることを期待していますp>

次のようにDirect3Dで作成されたテクスチャがあります:

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

OpenGLからこのテクスチャを使用して、システムメモリを往復せずに使用できる方法はありますか?

役に立ちましたか?

解決

いいえ。

Photoshopと別の画像ビューアーで画像を共有するように考えてください。これら2つのアプリケーションが共有するメモリ管理ライブラリが必要になります。

他のヒント

はい。以前に投稿したように(以下を参照)、少なくとも1つのソリューションが存在する必要があります。 私は2つの可能な解決策を見つけました:

1)nvidiaカードでは、256個のディレクトリに新しい拡張機能が統合されました。 http://developer.download.nvidia.com/opengl/specs/WGL_NV_DX_interopを参照してください。 txt

2)DXGIは、VistaおよびWindows 7のすべてのウィンドウを合成する原動力です。msdn.microsoft.com/ en-us / library / ee913554.aspxを参照してください

どちらの解決策もまだ経験していませんが、そのうちの1つをテストする時間を見つけられることを願っています。しかし、私にとっては最初の方が簡単なようです。


[可能性があると思う。最近のWindowsバージョン(Vistaおよび7)では、タスクバーのウィンドウコンテンツ(GDI、Direct3D、またはOpenGL)のプレビューを見ることができます。 私の知る限り、OpenGLプレビューは以前のWindowsバージョンではサポートされていませんでした。そのため、少なくとも新しいバージョンでは、異なるプロセス間でレンダーコンテキストを結合または共有する可能性があるはずです... これは、レンダリングコンテキストをシステム全体で共有して異なるレンダリングエフェクトを作成する他の最新のプラットフォームにも当てはまります。]

それは不可能だと思います。両方にテクスチャの異なるモデルがあります。

directXまたはopenGLなしでは、テクスチャメモリに直接アクセスできません。

その他:可能であれば、テクスチャアドレス、そのピッチ、幅、その他の(ハードウェアに依存する)メモリレイアウト情報を取得し、他のシステムでダミーテクスチャを作成し、取得したデータを自分のテクスチャオブジェクトを作成しました。これは不可能です

明らかに、これはどの下降ハードウェアでも動作しません。もしそうなら、あまりポータブルではありません。

データをホストメモリにダウンロードし、デバイスメモリに再アップロードしなければ不可能だとは思いません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top