我总共有9个纹理资源我需要2个资源一起用于像素着色器。在那种情况下,如果我只需要第7和第8个纹理资源,那么纹理槽开始索引应该是什么。 (例如Texture2D foo1:寄存器(t7)和Texture2D foo2:寄存器(t8))
void PSSetShaderResources(
UINT StartSlot,
UINT NumViews,
ID3D11ShaderResourceView * const *ppShaderResourceViews
);
编辑:我有一个用于管理着色器的包装类,我在处理多个资源,如下所示:
ID3D11DeviceContextPtr context = renderer->Context();
std::vector<ID3D11ShaderResourceView*> srvs;
for(auto texture : m_textures)
{
srvs.push_back(texture->ShaderResourceView());
}
context->PSSetShaderResources(m_startSlot, srvs.size(), srvs.data());
我从这个post发现你可以一次提供纹理的资源集合,并提供一个起始索引,从哪里从它提供的缓冲区中收集它们。