2017-01-06 10 views
-5

WPFのようにDirect3Dウィンドウでwinapiコントロールをレンダリングすることはできますか?DirectXを使用してwinapiコントロールをレンダリングする方法は?

+0

[DXGI](https://msdn.microsoft.com/en-us/library/windows/desktop/bb205075.aspx)は、[Windows Graphics API間のサーフェス共有](https:// msdn。 microsoft.com/en-us/library/windows/desktop/ee913554.aspx)。しかし、可能かどうかを問わなければならない場合は、このAPIはおそらくあなたのためではありません。関連するすべてのシステムコンポーネントの**親密な**知識が必要です。 – IInspectable

+0

@IInspectable、情報ありがとう – monobogdan

+0

@IInspectable、私は私のd3dアプリケーションでGUIが必要です。私はDXGIを使うべきですか? – monobogdan

答えて

0

従来のWin32ウィンドウコントロールは、Direct3Dレンダリングターゲットでは簡単に描画できません。

Windowsストアアプリケーションでは、Direct3D + XAMLモデルを使用できます。これは、Direct3DコンテンツをXAMLベースのUIにレンダリングするための特定のコントロールがあることを意味します。

Windows Presentation Foundationアプリケーションでは、D3DImageを使用してDirect3DコンテンツをWPF UIにレンダリングできます。これは従来のDirect3D 9のみをサポートしますが、this projectを使用してDirect3D 11をレンダリングすることができます。

多くのゲームでは、コントロールをDirect3DシーンにレンダリングするためにScaleformのようなものが使用されます。

単純なUIウィジェットで作られた古いDirectXサンプルはDXUTです。

Direct3Dサーフェスに直接レンダリングできる堅牢なコントロールが必要な場合は、imguiをご覧ください。

それ以外の場合は、簡単なコントロールのために、自分で実装することができます。 DirectX Tool KitSpriteBatchSpriteFontを使用すると、長い道のりができます。

+0

ありがとう、なぜDXUT - 悪い解決策ですか? SAMPは独自のGUIのレンダリングにDXUTを使用します。 – monobogdan

+0

@ monobogdan1:DXUTは推奨されていません。公式のライブラリではありません。 Chuck WalbournがGitHubリポジトリを更新したにもかかわらず、彼はあなたの問題についても[ブログ](https://blogs.msdn.microsoft.com/chuckw/2013/09/14/dxut-for-win32-desktop-update/)それに頼るとぶつかるかもしれません。 – IInspectable

+0

@ChuckWalbourn、私はScaleformについて知っています、それは3dpiのラップフラッシュ用の自転車です。 UDKはniceとslow GUIのために使用します。 しかしそれはC++のみで、C#ラッパーはありません。 – monobogdan

関連する問題