首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

那。PS外的纹理与PS内的Sampler是怎么“勾搭”到一块儿的呀

2012-03-04 
那。。。PS外的纹理与PS内的Sampler是如何“勾搭”到一块儿的呀?我知道在Pixel Shader外面是用SetTexture设置纹

那。。。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里面的数据和固定管线中的数据没有关系,要手动“绑定”

热点排行