問題タブ [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++ - DirectX OMSetRenderTargets でのアクセス違反
で DirectX 11 の Triangle サンプル アプリケーションを実行すると、次のエラー (Lesson2.Triangles.exe の 0x527DAE81 (d3d11_1sdklayers.dll) で未処理の例外: 0xC0000005: アクセス違反読み取り場所 0x00000000) が表示されD3D_FEATURE_LEVEL_9_1
ます。このエラーは、以下に示すように OMSetRenderTargets 関数で発生し、プログラムからその関数を削除すると発生しません (ただし、画面が青くなり、三角形がレンダリングされません)。
c++ - d3dx11.h がありませんか?
そのため、directx11 を数回再インストールし、Microsoft の Web サイトにアクセスして、すべての direct x キャビネット ファイルを含む SDK パックを入手しました。なぜこのエラーが発生し続けるのか、誰にも分かりますか? なぜそれを言っているのかはわかっていますが、それに対する解決策をもっと探しています。
1>c:\users\vaughn\documents\visual studio 2010\projects\myfirstapp\myfirstapp\main.cpp(5): 致命的なエラー C1083: インクルード ファイルを開けません: 'd3dx11.h': そのようなファイルまたはディレクトリはありません
c++ - shader.hlsl ファイルでエラーが発生しますか?
この DirectX11 プロジェクトで、shader.hlsl ファイルを使用して三角形内の位置に基づいて三角形を色付けする画面に三角形をロードするように取り組んでいます (これは、混ざり合う多色の三角形です)。今回も通常の出力エラーは出ていません。これにアプローチ/処理する方法がわかりません。
//shaders.hlsl ファイルを呼び出す関数
{
}
directx - DirectX11 API からシェーダー モデル 2 で GPU を制御する
DirectX 11 API 経由でシェーダー モデル 2.0 で gpu を制御することはできますか?
使用例は次のとおりです。directx9 で記述された 2 種類のレンダリングがあります。1 つ目は古い GPU のレガシーであり、2 つ目はシェーダーを使用した高品質のレンダリングです。高品質のレンダリングを dx11 に転送したいと考えていますが、レガシー レンダリングを使用する古いデバイスもサポートしています。それらが共存する可能性はありますか?
c# - DirectX 11は.NETをサポートしていますか?
C#アプリからDirectX 11を使用できますか?
WPFアプリケーションからDirectSoundを使用する必要があります。.NET 4 W7 x64
c++ - Kinect-DirectX11テクスチャへのデプスストリーム+ビデオストリーム
私はKinectSDKチュートリアルに従っていますが、これまでのところ正常に機能しているようです。
私が抱えている問題は、レンダリングにDirectX9を使用していることであり、代わりにDirectX11を使用したいと考えています。
実際の深度とビデオストリームをBYTE*に取り込むことができましたが、DirectX11テクスチャに変換する方法が必要です。
誰かが私がやろうとしているのと同じようなことをしたことがありますか?サンプルコードがあれば、とても助かります。
c++ - Alt-Enter が押されたときに呼び出される関数は?
Alt-Enter キーを押すと、全画面表示になり、ウィンドウ表示に戻る機能を持つゲーム アプリがあります。ただし、フルスクリーンになると、DirectX から次の警告が表示されます。
DXGI Warning: IDXGISwapChain::Present: Fullscreen presentation inefficiencies incurred due to application not using IDXGISwapChain::ResizeBuffers appropriately, specifying a DXGI_MODE_DESC not available in IDXGIOutput::GetDisplayModeList, or not using DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH.
2 番目の 2 つの可能性については、テストによって既に除外しているため、警告が表示される唯一の理由は、IDXGISwapChain::ResizeBuffers が正しく使用されていないか、Windows にバグがあるかのいずれかであることがわかっています。2番目の可能性をデバッグできないため、ResizeBuffersの問題に固執しています。これをデバッグするには、Alt-Enter キーを押してウィンドウ表示からフルスクリーンにするとどうなるかを調べたいと思います。ただし、アプリは ResizeDXGIBuffers メソッドを呼び出していないようです。実際、Alt-Enter は Windows や DirectX のどこかに埋め込まれているようで、押したときに鳴る一連の関数呼び出しを見つける方法がわかりません。編集:私のメソッドが WM_ACTIVATEAPP ハンドラーに配置されると、それが呼び出されますが、これは私が意図したものではありません。そのメッセージハンドラーから取り出すと、ウィンドウはまだフルスクリーンになります。ウィンドウを自分でフルスクリーンにする関数を呼び出していませんが。そのため、Alt+Enter は、これを行うために何らかの内部関数を自動的に呼び出す必要があります。
それが私の質問です: Alt-Enter が押されたときに Windows および/または DirectX 11 によって呼び出される関数を誰か知っていますか?
編集: この質問のタグが示すように、Windows マシンで DirectX 11 を使用しています。具体的には、Windows 7 64 ビット。
編集 2: Alt+Enter キーストロークを完全に食べ、Alt+Enter が押された状態を手動で保存して、自分のコードだけが呼び出されていることを確実に認識できるようにします。ただし、上記で説明した警告は引き続き発生します。私もMSDN のベスト プラクティスに従っているので、ここからどこへ行けばよいかわかりません。
c++ - Directx 11 深度テストが機能しない
どのモデルを前に配置するかをプログラムに正しく選択させることができません。MSDNコードに正確に従っています。私のコードは、DrawIndexed の特定の呼び出しですべてのポリゴンを正しく描画しているように見えますが、その後の各呼び出しでは、画面に近いかどうかに基づいてではなく、描画された順序でモデルが描画されるようです。
Direct3d を初期化するためのコードは次のとおりです。
これはレンダリング用の私のコードです:
私は広範囲に検索してみましたが、見つけたすべてのチュートリアルに従いました。それを修正するものは何もありません。
球体の場合、片側から見ると奥行きが正しく見えますが、反対側から見ると正しくありません。
どんな助けでも大歓迎です。ありがとう。
directx - グラフィックス ドライバー内での Draw() API 呼び出し以外の DirectX 10.0 または 11.0 頂点またはピクセル シェーダーの使用
私たちのプロジェクトは、DirectX 10 または 11 SDK アプリケーション内またはゲーム (BioShock、Far Cry など..) アプリケーションで使用されるさまざまな Vertex および Pixel、Geometry シェーダーをプロファイリングすることです。
ここで、シェーダー (VS、GS、PS) がいつ使用されているか、パイプライン内で実行されているかを技術的に理解する必要があります。Draw() DirectX API 呼び出し中に、シェーダーの設定がパイプライン内で実行されることがわかっています。
SetShader() を使用してパイプラインに設定されているシェーダーを内部的に実行または利用できる、Draw() 呼び出し以外の API はありますか?
デバイス API (Map、unmap、getResourcem、Copy リソースなど) はシェーダーを間接的に操作しますか?
DirectX Draw() API 呼び出し以外の DirectX ランタイムまたはグラフィックス ドライバー内のシェーダーの使用に関連するポインタは、特定して堅牢な実装を行うのに役立ちます。
c++ - DX10 メッシュ::DrawSubSet
私は DX11 に手を出していますが、DX10 に ID3DX10Mesh があったように、ID3DX11Mesh がないことに気付きました。DX11 はほとんど DX10 を拡張するだけなので、ID3DX10Mesh を置き換える必要がなかったか、それとも XNA フレームワークの何かに置き換えられたのでしょうか。
正確には問題ではありません。DX10 のものは DX11 でも動作するようですが、独自のメッシュ クラスを実装した方がよいと考えました。
ID3DX10Mesh::DrawSubSet はどのように機能するのでしょうか。異なるマテリアル/プロパティを持つメッシュのサブセットを描画できることは、私が必要とするものです。
ある種の属性テーブルを使用していることは知っています-これがどのように保存および使用されているかは不明です。
私が考えることができる簡単な解決策は、サブセットごとに 1 つずつ、メッシュに複数のインデックス バッファーを単純に格納することです。ただし、多くのプロパティがあると、これは多数のインデックス バッファーになる可能性があります。
別の方法として、メッシュの面を保存し (頂点をインデックスで参照)、それらにプロパティを割り当てることで、特定のプロパティを持つすべての面からインデックス バッファーを構築することで、そのプロパティを持つ面のサブセットを描画できます。
これら 2 つのうち、面を保存する方がすっきりしているように見えますが、とにかくインデックス バッファーを保存する必要があると思います。(フレームごとにこれらのバッファを再構築する時間を犠牲にすることは不要に思えます)
描画呼び出しの数を低く抑えるために、とにかく多くのサブセットを回避する必要があると思います。その場合、追加のバッファーが追加のメモリをあまり占有しないようにする必要があります。
ただし、どちらのアイデアも最適とは思えないので、DrawSubSet の実際の実装に関する他のアイデアや手がかりを歓迎します :)