問題タブ [directx-12]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
997 参照

c++ - Direct3D12 デバイスの作成が E_NoInterface で失敗する

で指定されているように D3D12 デバイスを作成しようとしています

https://msdn.microsoft.com/en-us/library/dn899120%28v=vs.85%29.aspx

NVidia 670 gtx、Windows 10 プレビュー ビルド 9926、および最新の 10041 Windows SDK があります。

また、最新の NVidia ベータ ドライバーも持っています。GeForce のシステム情報は、DirectX12 ランタイムを報告します。

通話中

NOINTERFACE エラー コードを含む HRESULT を返します

奇妙な呼び出し:

は有効なオブジェクトを返しますが、後で QueryInterface を使用して有効なデバイス オブジェクトを取得することはできません。

同じエラー コードを返す d3d12 ヘッダーを使用する代わりに、既に LoadLibrary/GetProcAddress を使用しようとしたことに注意してください。

0 投票する
1 に答える
2607 参照

c++ - DIRectX 12 と D3D12CreateDevice が失敗する

Microsoft DirectX12 コード サンプルを実行しようとしていますが、いずれの場合も関数 D3D12CreateDevice が失敗します。Visual Studio 2015 と Windows SDK を使用してコードをコンパイルしました。私は GTX560Ti を持っています。私のドライバーは Windows 10 用の 353.62 です。NVidia パネルでは現在の directX バージョン 12 と書かれていますが、dxdiag パネルでは 11.2 と書かれています。問題はここにあると思います...問題を解決してdirectXコードを実行するにはどうすればよいですか?

0 投票する
1 に答える
3720 参照

c++ - directx-12 - 複数の記述子ヒープで commandlist を使用する方法は?

現在マイクロソフトの例を調べていると、コマンドリストごとに cbv_srv_uav ヒープが 1 つしか使用されていないことがわかります (+ 追加のサンプラー ヒープ上にある可能性があります)。

CommandList ごとに複数のヒープを使用することは可能ですか?

だから私はヒープと範囲をセットアップします

その後、記述子テーブルを定義します

そのため、rsv ヒープの cpu オフセット 0 と 1 でテクスチャ 1 と 2 の shaderResourceViews を作成し、cbv ヒープの cpu オフセット 0 で定数バッファーの constantbufferview を作成します。

このような:

コマンドリストにこれらのヒープを参照するように指示する時が来ました

この後、コマンドリストを閉じると常にスローされます。

どのテーブルのどのヒープをコマンドリストに伝えるかを次に示します。

すべてのオブジェクトを 1 つの記述子ヒープ (例のように) に記述し、そのヒープの異なるオフセットを使用するだけで問題なく動作します。

デバッグ出力:

D3D12 エラー: ID3D12CommandList::SetDescriptorHeaps: pDescriptorHeaps[1] は、pDescriptorHeaps 配列の前の方にある記述子ヒープ タイプを設定します。一度に設定できる記述子ヒープの種類は 1 つだけです。[実行エラー #554: SET_DESCRIPTOR_HEAP_INVALID] D3D12 エラー: CCommandList::SetGraphicsRootDescriptorTable: 現在コマンド リストに CBV_SRV_UAV 記述子ヒープが設定されていないため、CBV_SRV_UAV ハンドルのルート記述子テーブルの設定は無効です。[実行エラー #708: SET_DESCRIPTOR_TABLE_INVALID] D3D12 エラー: CCommandList::SetGraphicsRootDescriptorTable: 現在コマンド リストに CBV_SRV_UAV 記述子ヒープが設定されていないため、CBV_SRV_UAV ハンドルのルート記述子テーブルの設定は無効です。[実行エラー #708: SET_DESCRIPTOR_TABLE_INVALID] D3D12 エラー: CCommandList::SetGraphicsRootDescriptorTable: 現在、コマンド リストに CBV_SRV_UAV 記述子ヒープが設定されていないため、CBV_SRV_UAV ハンドルのルート記述子テーブルの設定は無効です。[実行エラー #708: SET_DESCRIPTOR_TABLE_INVALID]

0 投票する
1 に答える
2977 参照

directx - SwapChainForHwnd の作成方法

次のコードでは、 device は でComPtr<ID3D12Device>正常に初期化されたのインスタンスD3D12CreateDeviceですが、失敗した が返されHRESULTます。値 0x887a0001 を取得します。私が間違っていることについてのアイデアをいただければ幸いです。

0 投票する
1 に答える
735 参照

directx-12 - IDXGIFactory4::CreateSwapChain が DXGI_ERROR_INVALID_CALL を返す

このようにスワップチェーンを作成しています

デバッグ モードでは問題なく動作しますが、リリース (x86 または x64) では、CreateSwapChain は を返しますDXGI_ERROR_INVALID_CALL

なぜこれがデバッグモードでは機能するのにリリースモードでは機能しないのか、誰かに説明してもらえますか?

ありがとう!

注: Direct3D 12 を使用しています

0 投票する
1 に答える
1248 参照

c++ - DirectX 12 - コマンド リストに関する質問

コマンドリストを理解しようとしています。コマンド リストには、レンダリング用のコマンドが記録されますが、リソースのバインドも記録されます。たとえば、頂点データを含むバッファーとしましょう。

これは、頂点バッファーのバインドを記録します。この時点でバッファはどうなりますか? 記録後にこの頂点バッファの内容を変更するとどうなりますか? execute command list を呼び出した後にこの頂点バッファーの内容を変更し、gpu がまだ終了していない場合はどうなりますか?

ExecuteCommandList は非同期関数呼び出しだと思いますが、そうですか? すべてのバインド (gpu へのデータ転送) を一度に実行しますか、それともすべてのバインドでもコマンドを 1 つずつ実行しますか? コマンド リストはドライバーによって実行されますか、それともすべて gpu に送信されますか?

まあ、良い例が不足しているので、まだたくさんの質問があります. 明確にするためにいくつか答えていただければ幸いです。

0 投票する
1 に答える
807 参照

directx-12 - DirectX12 - ExecuteCommandLists と Present 関数

Microsoft のサンプル例で次のことがわかりました。

実際にはどのように機能しますか? ExecuteCommandLists は非同期関数呼び出しであるため、コードの実行が継続され、Present 関数にヒットすることを意味します。

Present call の後はどうなりますか? たとえば、GPU がまだ描画中であり、動作しており、present が呼び出されているとします。Present は同期呼び出しですか? GPU がまだ描画中の場合、バッファを表示できません。あれは正しいですか ?誰かがここで何が起こっているのか説明できますか?

0 投票する
1 に答える
579 参照

directx-12 - DirectX 12/Mantle/Vulkan および HSA

DirectX 12、Mantle、Vulkan などの下位レベルのグラフィックス API の台頭に伴い、これらが異種システム アーキテクチャ (HSA) とどのように相互作用するのか (もしあったとしても) 疑問に思っています。

私が理解しているように、HSA のサポートには開発者の関与が必要でしたが、低レベルのグラフィックス API のいずれかがこれを処理するようになったのか、それとも開発者がそれを十分に活用する負担が残っているのかに興味があります。

HSA は、特にシステム メモリとビデオ メモリが同じ物理 RAM を共有している場合に、システム メモリとビデオ メモリの間でデータを簡単に共有するなどの機能に特に役立ちます。

この質問は現在の状況に固有のものである可能性が高いため、そのような概要で問題ありません (ただし、将来のロードマップに関する情報は良いでしょう)。単一のグラフィックス API のみをカバーする回答を受け入れます (疑わしいため)多くの人は、3 つすべてに加えて HSA に精通しています)。また、それがどのように機能するかを完全に誤解している場合は、それも遠慮なく指摘してください。私はどちらのテクノロジーにもあまり詳しくありませんが、現在それらがどのように相互作用しているかを知りたいです.