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

HLSL中的register的使用,该如何解决

2012-02-06 
HLSL中的register的使用DX中的例子 HDRFormats 2005的.FX文件中sampler s0 : register(s0)sampler s1 : r

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的函数,或者为了跨平台,可以用第一种用法。

热点排行