方法一(osg):
//创建shader
osg::Shader* vShader = new osg::Shader(osg::Shader::VERTEX, vertexSource);
osg::Shader* gShader = new osg::Shader(osg::Shader::GEOMETRY, geomSource);
osg::Shader* fShader = new osg::Shader(osg::Shader::FRAGMENT, fragmentSource);
//关联shader
osg::Program* program = new osg::Program;
program->addShader(vShader);
program->addShader(gShader);
program->addShader(fShader);
//添加shader
geom->getOrCreateStateSet()->setAttribute(program);
//设置shader中的uniform变量
geom->getOrCreateStateSet()->addUniform(new osg::Uniform("Texture", 0));
方法二(osgEarth):
osg::StateSet* stateset = getOrCreateStateSet();
VirtualProgram* vp = VirtualProgram::getOrCreate(stateset);
osg::Shader* shader = new osg::Shader(osg::Shader::VERTEX, vertexSource);
vp->setShader( name, shader );
一个opengl创建三角形的例子
实例Demo
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <GL/glew.h>
#include <GL/freeglut.h>
#include "ogldev_util.h"
#include "ogldev_math_3d.h"
GLuint VBO;
GLu