問題タブ [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# - SlimDX を使用した奇妙なレンダリング (面の穴)
SlimDX (DirectX 11) で単純な回転立方体をレンダリングするだけで問題が発生します。キューブが回転していて、これらは私が得る画像です:
この頂点シェーダーを使用します。
そして、これは私が WorldViewProj を準備する方法です:
まず最初に、この質問を見ました: SlimDX 使用時のクリッピングと 3D プロジェクションが正しくない
そして、おそらく、行列に何か問題があります (ビューも投影も転置せず、世界を転置するため、逆の場合は何もレンダリングされません)。しかし、ビュー行列と射影行列の両方を単位行列に設定しても、「穴」はまだそこにあります。
助けてください、事前に感謝します!
directx - DirectX地形での凹みの移動
ここでDirectxのサポートが必要です。
NvidiaDirectxSDKのTerraTessellationサンプルの上にプロジェクトを構築しています。
基本的に私がしたことは、地形に表示したいファイルの.ddsファイルを変更することでした。
問題は:
カメラをX、Y、Zの位置に移動すると、マップの凹みも移動するため、テクスチャに関しては、適切な位置にありません。何が起こっている?問題の解決に何が役立つでしょうか?ありがとう!下の写真を確認してください。
directx - DirectX 11を使用してアプリケーションを開発できますか?
DirectX 11を使用してC#、WPFアプリケーションを開発できるかどうか知りたいです。DirectXを使用して作成されたアプリケーション(中サイズ)があります。パラレルレンダリングのようなDirectx11の機能を使用する必要があります。DirectX 11を使用してアプリケーションを開発することは可能ですか?はいの場合、誰かが私にそのためのサンプルアプリケーションを提供できますか?コード全体を書き直す余裕がないため、SlimDXのような他のオプションを選択することはできません。
私にとって最良の選択肢は何ですか?
c++ - D3D11CreateDevice() が E_FAIL で失敗する原因は何ですか?
次のコードで D3D11CreateDevice() を呼び出しています。
ただし、格納される結果HRESTUL hr
はE_FAIL
. コンソールには次の出力があります。
Init Direct3D.exe の 0x7590b9bc での初回例外: Microsoft
C++ 例外: メモリ位置 0x0049ec64 での _com_error..
c:\users\andrew\desktop\code\common\d3dapp.cpp(389):
D3D11CreateDevice( 0, md3dDriverType, 0 , createDeviceFlags, 0, 0, D3D11_SDK_VERSION, &md3dDevice, &featureLevel, &md3dImmediateContext)
hr=E_FAIL (0x80004005) Init Direct3D.exe がブレークポイントをトリガーしました
コードがビルドされるときのリンクの問題ではないと思いますが、次の追加の依存関係が定義されています。
d3d11lib
d3dx11d.lib
D3DCompiler.lib
Effects11d.lib
dxerr.lib
次に考えたのは、私のカードは D3D11 と互換性がないということでした。しかし、そうではありません。の出力は次のdxdiag
とおりです。
E_FAIL の考えられる原因についてのヘルプをいただければ幸いです。
c++ - DirectX 11フレームバッファキャプチャ(C ++、Win32またはD3DXなし)
DirectX 11を使用して、フロントバッファーまたはバックバッファーの内容をバイト配列にキャプチャし、テクスチャまたはファイル作成のソースとして使用できるようにします。これまでにスワップチェーンを設定し、多くのレンダリングを実行し、次のコードを使用しています。これは、Presentを呼び出した後に必ず呼び出すようにします。
それは常に私にゼロアルファで黒を与えます。
通常、BitBltを使用してスワップチェーンからビットマップをコピーするGDI相互運用機能のオプションがありますが、制限があり、これは有効なソリューションではないことを意味します。
また、これのビットを実行するための機能を含むD3DXライブラリも問題外です。
format - R8G8B8A8_UNORM リソースから R32_UINT ビューを作成する
DirectCompute を使用してその場で画像編集を行う必要があります - ala: http://msdn.microsoft.com/en-us/library/ff728749%28v=vs.85%29.aspx
私のバックバッファは R8G8B8A8_UNORM で、Compute Shader 内で同時に読み書きできるようにするには、R32_UINT 形式の UAV を作成する必要があります。
これを行ったときのデバッグ出力からの引用:
「CreateUnorderedAccessView: ビューの作成時に、フォーマット (0x2a、R32_UINT) が無効です。リソースは、完全に修飾されたフォーマットで既に作成されており、キャスト可能ではありません (0x1c、R8G8B8A8_UNORM)」
上記のリンクのドキュメントからの引用:
「要素フォーマットごとにほとんどの 32 ビットは、DXGI_FORMAT_R32_UINT へのキャストをサポートしています」
何か不足していますか?
performance - 7 つのバック バッファーを備えた DirectX 11 スワップ チェーン
デスクトップ モードの Windows 8 で動作する独自のメディア プレーヤーがあります。ランタイム DirectX のバージョンは 11 ですが、ネイティブ グラフィックス ドライバーのサポートは DirectX 9 用です。
まったく同じセットアップの一部のコンピューターでは、実際のスワップ チェーンのバック バッファー カウントが 2 であり、パフォーマンスが優れていることがわかります。バッファ カウントは 7 で、ドロップされたフレームがあります。
私はそのプレーヤーのソース コードを持っていないので、実行時に異なるバック バッファー カウント数を決定する理由は何でしょうか。
そのようなバックバッファ数がパフォーマンスの変化につながる理由を誰かが説明できますか? または、バックバッファ数の意味を説明する関連ドキュメントを教えてください。
(詳細なデバッグ情報: GPUView を使用すると、バックバッファー カウントが 2 の場合、ハードウェアが同期モードで動作することがわかります。つまり、1 秒の VSync (クリップ フレーム レートは 30fps) ごとに HW キューに 1 つのパケットがあり、7 つのバックバッファーの場合、作業は5 ~ 7 フレームまとめて実行し、次にいくつかの空の VSync、次に 5 ~ 7 フレーム、というように)。
前もって感謝します!
c++ - ビットマップ フォント/スプライトをレンダリングするには、テクスチャ サンプラーをどのように使用すればよいですか?
私はテクスチャを持っていますが、スプライト テクスチャをサンプリングするためにテクスチャ サンプラーをどのようにすべきか知りたいと思っていました。私は DirectX11 を使用していますが、DX9/10 の場合にどうあるべきかを知っていれば、転送可能だと思います。
私は試した
ただし、レンダリング時にアーティファクトが発生しているように見え、本来あるべきほど明確ではないように見えました。
これはアーティファクトの例です。背景が水色の上部のテキストには、アーティファクトが表示されます (たとえば、A と C)。黒い背景の下のテキストは元の画像です。
directx - 単一の Present の前に複数の定数バッファーを更新する
SlimDX/D3D11 を使用してパーティクル システム マネージャーを作成していますが、定数バッファーに関するいくつかの問題が見つかりました。
私のパーティクル システム マネージャーは、物理特性の異なる複数のパーティクル システムを同時に描画でき、XNAのParticle 3D サンプルに基づいています。描画操作の一般的な考え方は次のとおりです。
- context.ClearRenderTargetView(...)
- パーティクルをレンダーする
- swapChain.Present()
「パーティクルのレンダリング」操作は次のように実装されます。
- shaderTimeGlobalVariable.Set(currentTime)
- シェーダー手法の各パスについて:
- パスを適用
- 各パーティクル システム:
- 定数バッファを物理定数で設定 (EffectConstantBuffer.SetRawValue)
- 1 つ以上の context.Draw 呼び出しを発行します。
私の問題は、最後の定数バッファー呼び出しのみが考慮されているように見えるため、すべての粒子システムが同じ物理特性を持つように強制されることです。
したがって、まず第一に、これは正しい/予想されると思いますが、いくつかの重要な点が欠けています。何が欠けているのか誰かが私に明確にすることができますか?
解決策は、パーティクルの物理的特性を頂点バッファーに挿入することであり、頂点ごとに約 12 バイト多く、したがって、使用している物理システムごとに 12k から 120k のコストがかかると思います。可能であれば避けたいこと:他に利用可能なオプションはありますか?
directx-9 - ID3D11Texture2D をメモリ バッファーに変換する
どうすればID3D11Texture2D
メモリ バッファに変換できますか? 私はID3D11Texture2D*
そこからデータをメモリバッファに読み込む必要があります。