|
|
发表于 2008-7-21 22:37:00
|
显示全部楼层
Re:HLSL纹理采样器问题!
sx是采样寄存器,x = [0,n]
在directx9里,采样器和纹理是耦合在一起的,sx位置的采样器只能对tx寄存器中的纹理采样(s0--t0,s1--t1)
有很多种方法可以设置采样器,固定管线的风格的写法,显式设置寄存器
dx:
IDirect3DDevice9::SetTexture(0,diffuseTexture) //diffuseTexture被加载到t0中,并和s0绑定
IDirect3DDevice9::SetTexture(1,normalTexture)
hlsl:
smapler diffuseSpl:s0;
sampler normalSpl:s1;
diffuseColor = tex2D(diffuseSpl,texCoord);
normal = tex2D(normalSpl,texCoord);
effect风格的写法:
dx
effect.SetTexture(diffuseTexHandle,diffuseTexture);
effect.SetTexture(normalTexHandle,normalTexture);
hlsl:
texture diffusetTexture;
texture normalTexture;
sampler2D diffuseSpl = sampler_state{texture = <diffuseTexture>;}; \\绑定纹理和采样器
sampler2D normalSpl= sampler_state{texture = <normalTexture>;};
diffuseColor = tex2D(diffuseSpl,texCoord);
.....
|
|