这个其实很简单,
一,写顶点着色器和片元着色器
static const char * vertexShader =
{
“void main(void)\n”
“{\n”
" gl_Position = ftransform();\n"
“}\n”
};
static const char *psShader =
{
“uniform float alpha;”
“void main(void)\n”
“{\n”
“gl_FragColor =vec4(0.0f,1.0f,0.0f,alpha);\n”
“}\n”
};
二,通过stateset添加program,program添加shader
osg::ref_ptrosg::StateSet stateset = panelGeode->getOrCreateStateSet();
osg::ref_ptr<osg::Shader> vs1 = new osg::Shader(osg::Shader::VERTEX, vertexShader);
osg::ref_ptr<osg::Shader> ps1 = new osg::Shader(osg::Shader::FRAGMENT, psShader);
osg::ref_ptr<osg::Program> program1 = new osg::Program;
program1->addShader(vs1);
program1->addShader(ps1);
stateset->setAttribute(program1, osg::StateAttribute::ON);
运行结果如下:

代码如下:

这篇文章展示了如何在OpenGL中使用osg库创建并应用顶点着色器和片元着色器来实现纹理渲染。代码包括了顶点着色器和片元着色器的定义,以及如何将它们添加到Program中,并设置到StateSet。同时,文章还创建了一个用于显示纹理的几何体,并通过Camera进行采样和渲染。
最低0.47元/天 解锁文章
765

被折叠的 条评论
为什么被折叠?



