3

Texture2D と TextureCube の両方を同時にピクセル シェーダーに渡す必要があります。

以前はテクスチャの配列を送信していましたが、これと同じように textureCube を送信できないことがわかりました。

This questionはバインディングと呼ばれるものに言及していますが、これに関するこれ以上の情報を見つけることができず、誰かがこの問題の解決策を教えてくれるのではないかと思っていました.

ありがとうございました。

編集---- Caesarの提案を実装しようとした後、次のコードはエラーを引き起こします。シェーダーを読み取ろうとしたときの最初の例外で、問題の行は単純です

Texture2D texture04 : register( t0 );

この後にクラッシュが発生します。

D3DX11CompileFromFile("Data/Shaders/Effects.fx", 0, 0, "VS", "vs_4_0", 0, 0, 0, &VS_Buffer, 0, 0);
D3DX11CompileFromFile("Data/Shaders/Effects.fx", 0, 0, "PS", "ps_4_0", 0, 0, 0, &PS_Buffer, 0, 0);
d3dDevice_->CreateVertexShader(VS_Buffer->GetBufferPointer(), VS_Buffer->GetBufferSize(), NULL, &VS);

再編集----正確なコードを書き直しました...今回はうまくいきましたが、理由はわかりません。どうもありがとうございました。

4

1 に答える 1

7

次のように、シェーダー ファイルに複数のテクスチャを登録できます。

Texture2D texture04 : register( t0 );    
TextureCube myCubeMap : register( t1 );

t0とでレジストリ番号を指定するため、そのt1番号を の最初のパラメータとして使用します。PSSetShaderResources

C++コードに設定したいときt0は、そのようにします

pImmediateContext->PSSetShaderResources( 0, 1, &(texture) );

そして、あなたが設定したいときt1は、そのようにします

pImmediateContext->PSSetShaderResources( 1, 1, &(texture) );
于 2013-04-10T01:56:32.447 に答える