那。。。PS外的纹理与PS内的Sampler是如何“勾搭”到一块儿的呀?
我知道在Pixel Shader外面是用SetTexture设置纹理的,可以设置多个哒。
在Pixel Shader中声明texture和sampler哒。
但是如何是设置多个纹理的话,PS内外多个纹理的一对一“勾搭”关系是如何指定的呀,
我看没有资料介绍过哒,我们不是要显式指定对应关系的吗。。。谢谢
[解决办法]
然后可以把纹理设置到texture texture0
D3DHANDLE handle =
m_pEffect->GetParameterBySemantic(NULL, "TEXTURE0");
或者根据名字来:
D3DHANDLE handle =
m_pEffect->GetParameterByName(NULL, "texture0");
m_pEffect->SetTexture(handle,纹理指针);
要问的是这个吗?
[解决办法]
texture texture0 :TEXTURE0;
texture texture1 :TEXTURE1;
texture texture2 :TEXTURE2;
然后用三个sampler采样三个texture0,texture1,texture2
在外面声明三个纹理句柄,
D3DHANDLE handle0 = m_pEffect->GetParameterByName(NULL, "texture0");
D3DHANDLE handle1 = m_pEffect->GetParameterByName(NULL, "texture1");
D3DHANDLE handle2 = m_pEffect->GetParameterByName(NULL, "texture2");
CreateTexture三次,最后
pd3dDevice->SetTexture(handle0,纹理指针);
pd3dDevice->SetTexture(handle1,纹理指针);
pd3dDevice->SetTexture(handle2,纹理指针);
[解决办法]
三个纹理坐标记记得在后面加上语义 TEX0 或 TEX1 或 TEX2,这样系统就能将每个纹理坐标对应上你的纹理。
[解决办法]
shader里面的数据和固定管线中的数据没有关系,要手动“绑定”