HLSL中的register的使用
DX中的例子 HDRFormats 2005的.FX文件中
sampler s0 : register(s0);
sampler s1 : register(s1);
sampler s2 : register(s2);
.Cpp文件中
pd3dDevice->SetSamplerState( 2, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
pd3dDevice->SetSamplerState( 2, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
我的理解上面代码更普遍的用法是:
sampler Sampler0 = sampler_state
{
texture = <texture0>;
FILTER = MIN_MAG_MIP_LINEAR;
AddressU = Wrap;
AddressV = Wrap;
};
问题:
1.这样理解有没有错?
2.不知道
sampler s0 : register(s0);
sampler s1 : register(s1);
sampler s2 : register(s2);
有什么好处??
请大侠帮忙!!
谢谢
[解决办法]
早期使用shader汇编的时候必须使用那种方法,现在HLSL成熟了,已经不需要那种用法了。
当然会用的话,适当的场合下可以用来对shader进行手工优化等等。
[解决办法]
前面那个用法是hlsl的用法,后面那个用法是FX的用法,如果你希望用ID3DXEffect来管理shader,那么你可以用后面的用法。 如果你实现了自己的shader管理,而不用D3DX的函数,只用D3D的函数,或者为了跨平台,可以用第一种用法。