Que*_*ing 3 c++ directx shader hlsl directx-11
我需要同时将Texture2D和TextureCube传递给我的像素着色器.
我之前发送了一系列纹理,但发现我无法发送一个textureCube.
这个问题提到了一些叫做绑定的东西,但是我无法找到关于此的更多信息,并且想知道是否有人能指出我解决这个问题的方法.
谢谢.
编辑----尝试实施Caesar的建议后,以下代码会导致错误.尝试着色器读取着色器时的第一次机会异常,问题就在于此
Texture2D texture04 : register( t0 );
Run Code Online (Sandbox Code Playgroud)
这会导致崩溃:
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);
Run Code Online (Sandbox Code Playgroud)
ReEdit ----重写了确切的代码......这次工作,不明白为什么.非常感谢你.
您可以在着色器文件中注册多个纹理,如下所示
Texture2D texture04 : register( t0 );
TextureCube myCubeMap : register( t1 );
Run Code Online (Sandbox Code Playgroud)
在t0与t1指定登记号,所以你用这个数字作为第一个参数PSSetShaderResources
如果要t0在C++代码中进行设置,可以这样做
pImmediateContext->PSSetShaderResources( 0, 1, &(texture) );
Run Code Online (Sandbox Code Playgroud)
当你想要设置时,t1你就这样做
pImmediateContext->PSSetShaderResources( 1, 1, &(texture) );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1316 次 |
| 最近记录: |