問題タブ [direct3d11]
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++ - 有効な次元で定数バッファーを作成する方法
こんばんは、
XMFLOAT3X3 を定数バッファーに送信しようとしています (以下のコードを参照)。
しかし、コンパイラは、XMFLOAT3X3 が定数バッファーのバイト幅に対して無効な次元であることを教えてくれます。
ただし、HLSL は初めてなので、バイト幅を 48 に設定しても、シェーダーの cbuffer の float3x3 が正しく登録されるかどうかはわかりません。これをどのように処理するのが最善ですか?
さらに情報が必要な場合は、コメントしてください。質問を編集します。十分に明確であることを願っています。
directx - DirectX 11で、SwapChain(DXGI_SWAP_CHAIN_DESC)で2つのバッファーを作成および登録する方法
私はDirectX11の初心者であり、 『Beginning DirectX 11』の第2章に続いて、次のコードを使用してバッファーを作成するためのコードがあります。
私の質問は、スワップチェーンの説明では、BufferDesc(DXGI_MODE_DESC構造体)が1つしかないため、明らかに1つのバッファーだけのスペースがあるということです。では、BufferCountが2以上に設定されている場合、2番目のバッファーはどのように登録されますか?別のDXGI_SWAP_CHAIN_DESCを使用していますか?いくつかのサンプルコードを投稿してください。
また、BufferCountのタイプはUNITです。これは、3つ以上のバッファーを追加できることを意味します。ダブルバッファリング手法では2つのバッファが使用されますが、1つのバッファは描画に使用され、もう1つのバッファはシーンに表示するために使用され、バッファが交換されます。3つ以上のバッファーの用途と利点は何ですか?
c++ - 定数バッファのテクスチャ変換マトリックスが正しく機能しない
テクスチャ座標を 0 と 1 でハードコーディングし、3x3 テクスチャ変換マトリックスを含む定数バッファを頂点シェーダに送信して、テクスチャをクリップしようとしています。
ただし、テクスチャは期待どおりにレンダリングされません。どこで間違ったのかわかりません。誰か助けてくれませんか?以下のコードを参照してください。
テストのために、私は恒等行列を使用してテクスチャ座標を変更しないようにしようとしていますが、テクスチャは非常に奇妙な方法で変換されて表示されます。
これがテクスチャです: (表示される色は、実際には透明な領域です。ただし、黒い色とハートの柔らかい赤色を除きます)
変換されたテクスチャ:
HLSL:
ハードコードされた VBuffer:
行列の定義:
Game_Manager GMSetTransformMatrix() の定義:
バッファの初期化:
direct3d11 - 提携ID3D11DeviceContext::PSSetShaderResource()とは何ですか
PSSetShaderResource()の最初のパラメーター:
StartSlot:「デバイスのゼロベースの配列にインデックスを付けてシェーダーリソースの設定を開始します」
では、整数インデックスと.hlsl変数の間の関係は何ですか?d3d9では、すべてが文字列ベースの名前でした。今、これらの整数インデックスには何かが欠けているようです......
シェーダーファイルが1つあるとします。
そして別の..
シェーダー_1.pshのみを使用している場合、それらが別々のファイルにある場合、それらをどのように区別しますか?
hlsl - HLSL4 ピクセル シェーダーを記述して 2Dtexture からルックアップを実行する
私は初心者のピクセル シェーダー ライターであり、いくつかの問題に直面しています。256x256、16 ビットの入力 (DXGI_FORMAT_R16_UINT) 画像を取得し、それを 256x256 のルックアップ テクスチャ (DXGI_FORMAT_R8_UNORM) に渡して、256x256 の 8 ビット出力に変換したいと考えています。
残念ながら、私は多くの問題に直面しているようで、出力は常に黒または白に固定されているようです。
また、どの DXGI 形式を使用すればよいか、また、どのデータ型が各形式に対応しているかもわかりません。
2D インデックスに変換する前に、pixelValue を正規化する必要がありますか?
インデックスを使用する前に正規化する必要がありますか?
代わりにサンプリングする必要がありますか?
私はここで正しい道を進んでいますか?
助けていただければ幸いです、ありがとう!
gpu - テクスチャをベクトルの2D配列として確実に(u、v)インデックス付けするにはどうすればよいですか?
シェーダーモデル5/D3D11/HLSLを使用します。
テクセルの2D配列をベクトルの2D行列として扱いたいのですが。
(各テクセルは4成分ベクトルです)。さまざまなシェーダーについて、テクスチャ内の特定の範囲のデータにアクセスする必要があります。したがって、テクスチャでアクセスする範囲は、当然、u、vコンポーネントとしてインデックス付けする必要があります。
HLSLでそれをどのように行いますか?私は次のことを考えています:
- 通常どおりテクスチャを作成します
- ベクトル値をテクスチャにロードします(テクセルごとに1つのベクトル)
- テクスチャサンプリングのすべての線形補間をオフにします(「最近傍」)
- シェーダーで、テクスチャ座標を使用して必要なベクトルを検索します
私が不安定だと感じるのは、浮動小数点uとvを使用してテクスチャにインデックスを付けるときに奇妙なエラーが発生するかどうかだけです。
テクスチャが1024x1024テクセルで、(3,2)->(3,7)にインデックスを付けようとしている場合、u =(3 / 1024,2 / 1024)->(3 / 1024,7 / 1024)少し不安定に感じます。おそらく、intコンポーネントによってテクスチャにインデックスを付ける方法はありますか?それともうまくいくでしょうか?
このためだけにGPGPUフレームワークを使用することを望まない(したがって、CUDAの提案はありません:)。
hlsl - 頂点シェーダーでテクスチャのサンプルを見ることができますか?
シェーダーモデル3.0では、これはノーだったと確信していますが、とにかくこれを聞きたいのですが、
シェーダーモデル5.0では、頂点シェーダーでテクスチャをサンプリングできますか?
頂点ごとに大量の補足情報を利用できるようにしたい場合、どのような選択肢がありますか?
編集:どうやらここで行われているように頂点テクスチャフェッチを実行することは可能ですが、hlslシェーダーモデル5プログラムで試してみると、エラーが発生します
エラーX4532:式をvs_5_0命令セットにマップできません
pixel-shader - フラグメントの行と列のインデックス、HLSL シェーダー
HLSL (DX11) フラグメント シェーダーで現在のフラグメントの行と列を取得できますか?
c++ - すべてのDirectXSDKベースのアプリケーションの実行速度が遅い
どこからともなく、私が実行するすべてのDirectXアプリケーションプロジェクトは4 fpsしか与えず、なぜこれが起こっているのかわかりません...?すべてのサンプル、Webサイトからのチュートリアル、基本的なDirectXプログラム(単一のプロジェクトでデバイスを初期化するなど)では、同じ結果が得られます。
私はまだ正常に小売ゲームをプレイできますが、directxsdkを使用してビジュアルスタジオから実行したものはすべて異常に実行されます。
私はW764ビット、最新のグラフィックスドライバーを備えたGTX460m(DX11)、DX SDK(2010年6月)、8 GBのRAM、i7CPUで実行しています......
誰かが助けてくれるなら、私はとても感謝しています。
d - D言語でリソースを解放する
C ++でDirect3Dを使用する場合、たとえば「ID3D11Buffer *vertexBuffer_」を含む「Cube」クラスを記述し、そのCubeオブジェクトのデストラクタがvertexBuffer _-> Release()を呼び出すようにすることができます。
「unique_ptrcube_」オブジェクトを含む「Scene」クラスを持つことができます。シーンを削除すると、キューブが削除され、その結果、使用しているD3Dリソースのリリースが呼び出されることがわかります。
DIではこれを行うことはできません。デストラクタを書くことはできますが、いつ呼び出されるかわかりません。GCがメモリを必要としない場合、それらが呼び出されることはありません...
では、Dでこの種のことを処理するための最良の方法は何ですか?各オブジェクトに「Free」メンバー関数を追加して、それ自体のリソースをすべて解放し、所有するオブジェクトに対して「Free」を呼び出すこともできますが、これはエラーが発生しやすい手動操作であり、C++から一歩後退しているようです。
Dでこの種のものを処理するためのより良い方法はありますか?