首色器

#include <Windows.h>
#include <iostream>
#include <string>

#include <osg/Node>
#include <osg/Group>
#include <osg/Geode>

#include <osgViewer/Viewer>
#include <osgGA/StateSetManipulator>
#include <osgDB/ReadFile>

std::string vertex_shader =
"varying vec4 color;\n"
"void main(void)\n"
"{\n"
"color = vec4(fract(gl_Vertex.x),fract(gl_Vertex.y),fract(gl_Vertex.z),1.0);\n"
"gl_Position=gl_ModelViewProjectionMatrix*gl_Vertex;\n"
"}\n";

std::string frag_shader =
"varying vec4 color;\n"
"void main(void)\n"
"{\n"
"gl_FragColor = clamp(color,0.1,0.8);\n"
"}\n";

int main()
{
	osgViewer::Viewer viewer;

	osg::ref_ptr<osg::Group> group = new osg::Group();
	group->addChild(osgDB::readNodeFile("cow.osg"));

	osg::ref_ptr<osg::Program> program = new osg::Program();
	program->addShader(new osg::Shader(osg::Shader::VERTEX, vertex_shader));
	program->addShader(new osg::Shader(osg::Shader::FRAGMENT, frag_shader));
	group->getOrCreateStateSet()->setAttributeAndModes(program);

	viewer.setSceneData(group);
	viewer.setUpViewInWindow(100, 100, 500, 400);
	viewer.addEventHandler(new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()));
	return viewer.run();
}

posted @ 2021-09-08 15:51  暹罗吹雪  阅读(50)  评论(0编辑  收藏  举报