Ogre材質指令碼中定義引數變數
阿新 • • 發佈:2019-01-02
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會自動的提供當前的