http://hi.baidu.com/litterbug23/blog/item/5c1afed083158216a18bb7ea.html
在Ogre中如何关联textunit 与 cg/hlsl/glsl 语言中的 uniform sampler 关联:
cg 和 hlsl 中基本上通用:
pass
{
textunit
{
textname diffuseMap.jpg
}
textunit
{
textname normalMap.jpg
}
}
float4 main(tex0: TEXCOORD0,
uniform sampler diffusemap ,
unifrom sampler normapmap ):COLOR
{
................
}
如果不指定参数的话,那么会按照纹理单元的顺序,与fragment_shader中的sampler顺序保持一致。
如果纹理单元很多,为了防止错误,最好使用下面的方法确定纹理单元与采样器sampler的关联
float4 main(tex0: TEXCOORD0,
uniform sampler diffusemap: register(s0) ,
unifrom sampler normapmap:register(s1) ) :COLOR 或者
float4 main(tex0: TEXCOORD0,
uniform sampler diffusemap: TEXUNIT0 ,
unifrom sampler normapmap:TEXUNIT0 ):COLOR
glsl 中关联我还没有验证,在网上找到的资料为
函数的采样参数需要在顶点程序声明中设置
fragment_program myFragmentProgramGLSL glsl
{
source prog.frag
default_params
{
param_named diffusemap int 0
param_named normapmap int 1
}
}
不过好像以前使用 register(sn)好像也可以。有空再去试试。