- 理论
着色器是运行在GPU上的小程序,最常用的着色器语言是GLSL,想学习着色器的同学可以在OpenGL中文网进行学习。
OpenGL中文网
openGL是有一个流水线的渲染管线

如顶点着色器就是在输入顶点等。
48讲的初略介绍GLSL关键字

本节所使用的GLSL为低版本,在高版本中varying基本上已经弃用,使用out和In进行代替。
废话不多说,直接看glsl着色器在osg中的运用。
#include "OsgCommon.h"
static const char* vershader = {"varying vec4 color;\n""void main(void)\n""{\n""color = gl_Vertex; \n""gl_Position =gl_ModelViewProjectionMatrix*gl_Vertex;\n""}\n"
};
static const char* fragshader = {"varying vec4 color;\n""void main(void)\n""{\n""gl_FragColor=clamp(color, 0.0, 1.0);\n""}\n"
};
int main()
{osgViewer::Viewer view;osg::Node*node = osgDB::readNodeFile("glider.osg");osg::StateSet*stateset = node->getStateSet();osg::Program *pro = new osg::Program;pro->addShader(new osg::Shader(osg::Shader::VERTEX, vershader));pro->addShader(new osg::Shader(osg::Shader::FRAGMENT, fragshader));node->getOrCreateStateSet()->setAttribute(pro);view.setSceneData(node);view.run();return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!