C++ 在着色器中设置纹理';D3D10中的s常量缓冲区
好的,我在D3D10下编译了一个着色器 我正在获取着色器反射,以获取着色器中所有常量/全局的详细信息。但是我有点困惑。。。如何将纹理设置为恒定缓冲区 我假设我不只是映射常量缓冲区并将ID3D10Texture指针复制到其中。。。我假设我使用ID3D10ShaderResourceView,但我不确定如何在常量缓冲区中设置它C++ 在着色器中设置纹理';D3D10中的s常量缓冲区,c++,directx,textures,shader,direct3d10,C++,Directx,Textures,Shader,Direct3d10,好的,我在D3D10下编译了一个着色器 我正在获取着色器反射,以获取着色器中所有常量/全局的详细信息。但是我有点困惑。。。如何将纹理设置为恒定缓冲区 我假设我不只是映射常量缓冲区并将ID3D10Texture指针复制到其中。。。我假设我使用ID3D10ShaderResourceView,但我不确定如何在常量缓冲区中设置它 任何帮助都将不胜感激 不将纹理绑定到恒定缓冲区。您可以使用以下方法通过视图将纹理绑定到舞台(此处为GS舞台): void GSSetShaderResources( [i
任何帮助都将不胜感激 不将纹理绑定到恒定缓冲区。您可以使用以下方法通过视图将纹理绑定到舞台(此处为GS舞台):
void GSSetShaderResources(
[in] UINT StartSlot,
[in] UINT NumViews,
[in] ID3D10ShaderResourceView *ppShaderResourceViews
);
视图和CBs实际上是两个独立的东西。您不会将纹理绑定到恒定的缓冲区。您可以使用以下方法通过视图将纹理绑定到舞台(此处为GS舞台):
void GSSetShaderResources(
[in] UINT StartSlot,
[in] UINT NumViews,
[in] ID3D10ShaderResourceView *ppShaderResourceViews
);
视图和CBs实际上是两个独立的东西。好的,我开始意识到这一点,但我如何将给定的着色器全局“Texture2D”绑定到给定的插槽?也许我应该开始一个新问题。。。?该死的我使用XP macine尝试更早地完成DX10工作;)您必须使用register属性将SRV(在缓冲区或纹理上)绑定到给定的插槽:例如:Texture2D漫反射:register(t0)//此处的插槽0然后在调用*SetShaderResources.Ok时,此SRV绑定到ppShaderResourceViews[0+StartSlot]。我开始意识到这一点,但如何绑定给定着色器全局“Texture2D”到指定的位置?也许我应该开始一个新问题。。。?该死的我使用XP macine尝试更早地完成DX10工作;)您必须使用寄存器属性将SRV(在缓冲区或纹理上)绑定到给定的插槽:例如:Texture2D漫反射:寄存器(t0)//此处的插槽0然后在调用*SetShaderResources时,此SRV绑定到ppShaderResourceViews[0+StartSlot]。