2013-04-10 89 views
3

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

我以前发送的纹理数组,但发现我无法发送textureCube以及这个。

This questionThis question提到了一种叫做绑定的东西,但是我无法找到任何关于此的更多信息,并想知道是否有人能够指出我解决此问题的方法。

谢谢。

编辑---- 试图执行凯撒的建议后,下面的代码会导致错误。当着色器试图读取 第一次机会异常,这个问题行是根本

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

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

回答

6

你可以像这样

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

t0t1在着色器文件中注册多个纹理指定登记号,并让你用这个数字作为第一个参数为PSSetShaderResources

当你要设置t0在你的C++代码,你做它像这样

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

的当你想设置t1你做它像这样

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

的线条寄存器添加到我的像素着色器失败d。 Texture2D texture04:register(t0); – Questioning 2013-04-10 19:29:08

+0

@Dino什么是错误? – Caesar 2013-04-10 23:59:52

+0

我更新了主要帖子后,当我修复它,但忘了再次回复你/删除上面的评论。它现在已经修复了!非常感谢您的帮助。 – Questioning 2013-04-11 09:53:05