GLSL傳遞數組


static const char *microshaderFragSource = {
    "varying vec4 color;\n"
    "uniform bool test1=true;\n"
    "uniform float test2=15.0;\n"
    "uniform float gauss_num[10];\n"
    "void main(void)\n"
    "{\n"
    "        if(test1)\n"
    "    gl_FragColor = clamp( color, 0.0, 1.0 );\n"
    "        else\n"
    "    gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n"
    "}\n"
};
// 數組類型的uniform,數組大小必須與.glsl中的數組大小保持一致
    osg::FloatArray* g_GaussNum = new osg::FloatArray(10); osg::Uniform* gauss_num = new osg::Uniform(osg::Uniform::FLOAT, "gauss_num", g_GaussNum->size()); gauss_num->setArray(g_GaussNum);
//如果是vec2類型的數組,使用FLOAT_VEC2,setElement循環設置每一個元素
// 給uniform添加一個回調 osg::Uniform* OffsetUniform = new osg::Uniform("Offset", osg::Vec3(0.0f, 0.0f, 0.0f)); OffsetUniform->setUpdateCallback(new AnimateCallback()); ss->addUniform(OffsetUniform);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM