問題タブ [directx-11]
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.
c++ - IDXGISwapChain::Present によりドライバーがクラッシュし、デバイスが削除される
DirectX 11 API、特に遅延コンテキストを使用するゲーム エンジンを設計しています。基本的な考え方は、すべてのデバイス状態に独自の遅延コンテキストを与え、すべてのジオメトリがレンダリングされた後、すべての遅延コンテキストを反復処理し、直接のコンテキストでそのコマンド リストを実行することによって表示することです。これをテストするには、ワイヤーフレーム シェーダーのみを使用して画面に 2 つの三角形を描画するだけでした。すべての DirectX 呼び出しは、PIX デバッグ レポートで表示された場合でもエラーを返しませんが、) が呼び出されるとすぐにIDXGISwapChain::Present(0,0
、画面全体が黒くなり、その後戻ります。画面の右下隅に、ディスプレイ ドライバが「応答を停止し、正常に回復しました」というエラー ボックスが表示されます。PIX ログを確認したところ、"D3D11: Removing Device
" PIX ログのコールの pre ブロックと post ブロックの間。 post ブロックに示されている戻り値は ですDXGI_ERROR_DEVICE_REMOVED
。これをどう判断すればよいかよくわかりません。PIX ログは次のとおりです。
他に何か必要な場合はお知らせください。主に約 20 の個別のクラスに及ぶため、コードを投稿していませんが、バッファーの内容、HLSL、およびロジックの背後にある説明を投稿できます。
アップデート:
上記の問題をある程度解決しました。理由の一部は、シェーダー、インデックス バッファー、頂点バッファー、および定数バッファーを設定していないことが原因である可能性が最も高いです。元の問題はまだ解決されていませんが、これに取り組んでいるうちに新しい考えが浮かびました。私は電話したことはありませんID3D11DeviceContext::Begin(0)
。ただし、デバイス状態クラスからデバイス コンテキストを取得し、そのコンテキストで Begin を呼び出すと、アクセス違反が発生し、ID3D11DeviceContext
オブジェクトへのポインターが 0 に設定されます。これは への呼び出しでのみ発生し、呼び出しをBegin
削除すると動作が停止します。DirectX SDK のサンプル コードを見てみると、いつでも開始するための明示的な呼び出しが見つかりません。この電話は必要ですか?これは少し話題から外れているように思えるかもしれませんが、それが原因でコマンド リストが壊れている場合は、これが原因である可能性があります。Present
デバイスを削除しています。
関連コード:
wpf - WPFとSlimDX(DirectX 11)の相互運用
こんにちは私は、D3DImageと共有テクスチャを使用して、SlimDXとDirectX11グラフィックをWPFアプリケーションに統合することができました。ただし、単純なシーン(SlimDXサンプルのGameOfLifeなど)を高解像度(2560x1440)でレンダリングすると、パフォーマンスが大幅に低下します。
レンダリングメソッドのパフォーマンスプロファイリングを試してみましたが、バックバッファを無効にするときにほとんどの時間がD3DImageのロックに費やされているようです。
描画後、デバイスのフラッシングに多くの時間が費やされます。
誰もが問題とこれを最適化する方法を知っていますか?WPFとSlimDXを統合すると、降下パフォーマンスが期待できますか?
c++ - DirectX SDK での C++ リンカ エラー
DirectX を使用した C++ プログラミングに取り組もうとしています。これは非常に困難な戦いであり、数行のコードしか記述できませんでした。私の戦いのほとんどはリンカーで行われました。これまでのところ、ヘッダーファイルにこれがあります:
そしてソースファイルで:
その最後の行で、「エラー LNK2019: 未解決の外部シンボルD3D11CreateDeviceAndSwapChain@48 が関数 void _cdecl InitD3D(struct HWND__*) で参照されています」(?InitD3D@@YAXPAUHWND__@@@Z)」と表示されます。
ここで何が問題なのかわかりません.#includesはD3Dライブラリをリンクするために機能し、プログラムはその行に到達するまでビルドまたは実行されます. 皆さんの助けをいただければ幸いです。ありがとう!
c++ - DirectX カメラは 3D モデルのワールド マトリックスに基づいて追跡しますか?
複数のオブジェクトが 3D 空間内を動き回っており、ボタンを押すと、カメラがスナップして選択したオブジェクトを追跡する方法を探しています。
各オブジェクトの worldMatrix を利用する方法はありますか? (以下は 1 つのオブジェクトの例です。これは、回転および周回する惑星です)
私は本当にこれを実現するエレガントな方法を見つけようとしているので、どんな提案でも大歓迎です。
ありがとう
c++ - DirectX11 から Directx9 へのリソースの共有
let 、私は 2 つのデバイスを持っています。1 つ目は DirectX9 で、2 つ目は DirectX11 です。私がやっていることは、パーティクルを計算し、D3D11 の Compute Shader によって D3D11 テクスチャにデータを保存し、その D3D11 テクスチャを D3D9 デバイスで使用して表示することです。私は次のコードを使用しています..
D3D11 デバイスでは..(m_pBuffer は ID3D11Buffer です)
次に、D3D9 デバイスで...
私が抱えているエラーは、「Direct3D9: (エラー) : 開いたリソースと作成したリソースが一致しないため、共有リソースを開けません」です。
編集: OK、dx9 で D3DFMT_A16B16G16R16F を使用し、dX11 で DXGI_FORMAT_R16G16B16A16_FLOAT を使用してテクスチャを作成すると、うまくいきました。しかし、 D3DFMT_A32B32G32R32F と DXGI_FORMAT_R32G32B32A32_FLOAT を使用すると、上記のエラーが発生します。
c++ - DirectX10/11のGPUから変換された頂点を取得する
私が開発しているグラフィックエンジンは、頂点の行列変換である主要なボトルネックを開発しました(静的な頂点はほとんどありません)。これまで、CPUを使用して頂点を変換し、フレームごとに頂点バッファーを更新してきました(データのコピー自体は少しボトルネックですが、これまでのところ管理可能です)。
したがって、メッシュバッファーをGPU内に保持できれば、そこで頂点を変換し、変換された頂点のセットを他の処理のためにメインメモリに戻すことができると考えていました(後続の処理には、GPUシェーダーよりも少し多くの相互接続が必要です)許可する)。は、現在のコードのボトルネックを解消する可能性があります。
それを行う方法に関するヒントはありますか?ありがとう。
directx - どちらが速いですか:実行またはテッセレーションの前に詳細なメッシュを作成しますか?
問題を簡単にするために、球について考えてみましょう。球を持っていて、実行する前に、半径、位置、三角形の数を知っているとしましょう。また、三角形の数が十分に多いとしましょう(たとえば、約5万個の三角形)。
一般に、この球メッシュを事前に作成してすべての50k三角形をグラフィックカードにストリーミングする方が速いでしょうか、それとも単一のポイント(球の中心を表す)を送信し、テッセレーションとジオメトリシェーダーを使用して球を構築する方が速いでしょうか。 GPUで?
これらの球を100個異なる位置に配置した場合、さらに高速になりますか?ハル/ジオメトリシェーダーを使用して、インスタンス化と組み合わせることができるものを作成できますか?
c++ - Directx11-CreateTexture3DOUT_OF_MEMORYエラー
実験のためにwhileループで3Dテクスチャを作成しています。最後にリリースすることを忘れませんでしたが、300前後のループの後にOUT_OF_MEMORYエラーが発生しました
。私のコードは次のとおりです。
ここで私を助けてください。ありがとう
c++ - DirectX 10/11 定数バッファーの内容が通過しない
次のように定義された定数バッファーを作成しました
HLSLと
C++で
これで、すべての行列と aMatrixWeights 配列の最初の 5 つの要素が正常に配信されますが、その後は何も 0 になりません。何が起こっているのか知っている人はいますか? ありがとう。
c++ - d3d 11 は d3d10 および d3d9 と下位互換性がありますか?
実際には 1 つの質問の束である質問を送信したので、要求に応じてそれらを個別の質問に分割しています。
direct3D に関する一般的な質問です。hlsl 5.0 シェーダーを使用して完全に d3d11 でアプリケーションを作成した場合、これらは d3d10 または d3d9 対応のシステムとのみ互換性があり、グラフィカルな効果と d3d11 の効率が低下しますか? もしそうなら、それはどれほど効率が悪いでしょうか?そうでない場合、d3d9、d3d10、および d3d11 を使用する場合を除いて、まったく同じプログラムの 2 つまたは 3 つの異なるバージョンを真剣に作成する必要がありますか?