diff --git a/examples/osgtext/osgtext.cpp b/examples/osgtext/osgtext.cpp index 34926b383..2fb0421eb 100644 --- a/examples/osgtext/osgtext.cpp +++ b/examples/osgtext/osgtext.cpp @@ -70,6 +70,27 @@ static const char *gl3TextFragmentShader = { #endif +static const char* vertexShader = { + "varying vec2 texCoord;\n" + "varying vec4 vertexColor;\n" + "void main(void)\n" + "{\n" + " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" + " texCoord = gl_MultiTexCoord0.xy;\n" + " vertexColor = gl_Color; \n" + "}\n" +}; + +static const char* fragmentShader = { + "uniform sampler2D glyphTexture;\n" + "varying vec2 texCoord;\n" + "varying vec4 vertexColor;\n" + "void main(void)\n" + "{\n" + " gl_FragColor = vertexColor * texture(glyphTexture, texCoord).aaaa;\n" + "}\n" +}; + osg::Group* createHUDText() { @@ -833,6 +854,21 @@ int main(int argc, char** argv) viewer.setSceneData(group); } + if (arguments.read("--shaders")) + { + osg::ref_ptr program = new osg::Program; + program->addShader(new osg::Shader(osg::Shader::VERTEX, vertexShader)); + program->addShader(new osg::Shader(osg::Shader::FRAGMENT, fragmentShader)); + + osg::ref_ptr root = viewer.getSceneData(); + osg::ref_ptr ss = root->getOrCreateStateSet(); + + ss->setAttribute(program.get()); + ss->addUniform(new osg::Uniform("glyphTexture", 0)); + + } + + std::string filename; if (arguments.read("-o",filename)) {