[转]在Ogre中如何关联textunit 与 cg/hlsl/glsl 语言中的 uniform sampler 关联

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)好像也可以。有空再去试试。

posted @ 2012-02-23 11:44  Pulaski  阅读(771)  评论(0编辑  收藏  举报