3

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

我之前发送了一组纹理,但发现我无法发送一个 textureCube 以及这个。

这个问题提到了一种叫做绑定的东西,但我找不到更多关于这个的信息,并且想知道是否有人可以为我指出解决这个问题的方向。

谢谢你。

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

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

ReEdit---- 重写了确切的代码......这次成功了,不知道为什么。非常感谢。

4

1 回答 1

7

您可以像这样在着色器文件中注册多个纹理

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

并指定注册表号t0t1因此您使用该号码作为第一个参数PSSetShaderResources

当你想t0在你的 C++ 代码中设置时,你可以这样做

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

当你想设置时,t1你就这样做

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