只要其數量不超過着色器配置文件規格,就可以使用多個紋理。下面是一個例子: HLSL代碼:
Texture2D diffuseTexture : register(t0);
Texture2D anotherTexture : register(t1);
C++代碼:
devcon->V[P|D|G|C|H]SSetShaderResources(texture_index, 1, &texture);
因此,例如,對於上面的HLSL代碼將是:
devcon->PSSetShaderResources(0, 1, &diffuseTextureSRV);
devcon->PSSetShaderResources(1, 1, &anotherTextureSRV); (SRV stands for Shader Texture View)
OR:
ID3D11ShaderResourceView * textures[] = { diffuseTextureSRV, anotherTextureSRV};
devcon->PSSetShaderResources(0, 2, &textures);
HLSL名稱可以是阿爾比trary並且不必與任何特定名稱相對應 - 只有索引很重要。雖然「註冊(tXX);」聲明不是必需的,我建議您使用它們以避免混淆哪個紋理對應於哪個插槽。
你想要做混合/多紋理? – 2012-07-26 11:45:24