我需要同时将Texture2D和TextureCube传递到我的像素着色器。

我以前发送的是纹理数组,但发现我还不能发送TextureCube。

This question提到了一种称为绑定(bind)的东西,但是我无法找到更多有关此的信息,并且想知道是否有人可以为我指出解决该问题的方向。

谢谢。

编辑 - -
尝试实现凯撒的建议后,以下代码导致错误。
尝试读取着色器时的一次机会异常,问题行很简单

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);

重新编辑----
重写了确切的代码...这次工作了,不知道为什么。非常感谢你。

最佳答案

您可以在着色器文件中注册多个纹理,如下所示

Texture2D texture04 : register( t0 );
TextureCube myCubeMap : register( t1 );
t0t1指定注册表号,因此您使用该号码作为PSSetShaderResources的第一个参数

当您想在C++代码中设置t0时,您可以这样做
pImmediateContext->PSSetShaderResources( 0, 1, &(texture) );

当您想要设置t1时,您可以像这样
pImmediateContext->PSSetShaderResources( 1, 1, &(texture) );

07-27 19:44