C++ 在着色器中设置纹理';D3D10中的s常量缓冲区

C++ 在着色器中设置纹理';D3D10中的s常量缓冲区,c++,directx,textures,shader,direct3d10,C++,Directx,Textures,Shader,Direct3d10,好的,我在D3D10下编译了一个着色器 我正在获取着色器反射,以获取着色器中所有常量/全局的详细信息。但是我有点困惑。。。如何将纹理设置为恒定缓冲区 我假设我不只是映射常量缓冲区并将ID3D10Texture指针复制到其中。。。我假设我使用ID3D10ShaderResourceView,但我不确定如何在常量缓冲区中设置它 任何帮助都将不胜感激 不将纹理绑定到恒定缓冲区。您可以使用以下方法通过视图将纹理绑定到舞台(此处为GS舞台): void GSSetShaderResources( [i

好的,我在D3D10下编译了一个着色器

我正在获取着色器反射,以获取着色器中所有常量/全局的详细信息。但是我有点困惑。。。如何将纹理设置为恒定缓冲区

我假设我不只是映射常量缓冲区并将ID3D10Texture指针复制到其中。。。我假设我使用ID3D10ShaderResourceView,但我不确定如何在常量缓冲区中设置它


任何帮助都将不胜感激

不将纹理绑定到恒定缓冲区。您可以使用以下方法通过视图将纹理绑定到舞台(此处为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]。