1、顶点着色程序中传递参数:
GpuProgramParametersSharedPtr params = entity->getSubEntity(0)->getMaterial()->
getTechnique(0)->getPass(0)->getVertexProgram().createParameters();
params->setNamedConstant(“ambient”, ColourValue(0.5, 0.5 0.5 1.0));
2、片段着色程序中传递参数:
脚本中:
param_named_auto worldMatrix3x4Array[0] world_matrix_array_3x4
param_named_auto viewProjectionMatrix viewproj_matrix
param_named_auto ambient custom 12
后面额外的参数(“12”)是用来传递给Ogre程序来辨认到底是绑定到哪个参数上面。被绑定到GPU程序中的变量类型只能是4-vector(四元向量)类型(换句话说,就是Ogre中的Vector类),但是从CPU到GPU传递数据具体的含义可以任你确定,比如在我们现在的例子中,我们认为这个定制的参数的意义是RGBA各式的颜色值。
程序中:
Vector4 myColor;
entity->getSubEntity(0)->setCustomParameter(12, myColor);
现在,当GPU程序开始执行渲染到这个通路的时候,Ogre会自动的提供当前的myColor变量的值作为参数。而我们在脚本中使用的索引(“12”)的唯一目的就是为了查询绑定参数,需要注意的是,这个索引值不可以为0。