diff --git a/examples/osgtext/osgtext.cpp b/examples/osgtext/osgtext.cpp index 1983f63e3..b576dc76b 100644 --- a/examples/osgtext/osgtext.cpp +++ b/examples/osgtext/osgtext.cpp @@ -36,63 +36,6 @@ #include #include -// These shaders are only required for GL3/GL4 core profile. -// The fragment shader uses the red component of the font texture and not the alpha channel (GL_ALPHA is deprecated in the core profile),. -// osgText will write to GL_RED instead of GL_ALPHA if it is compiled with OSG_GL3_AVAILABLE but not with OSG_GL2_AVAILABLE or OSG_GL1_AVAILABLE. -#if defined(OSG_GL3_AVAILABLE) && !defined(OSG_GL2_AVAILABLE) && !defined(OSG_GL1_AVAILABLE) -static const char *gl3TextVertexShader = { - "#version 330 core\n" - "in vec4 osg_Vertex;\n" - "in vec4 osg_Color;\n" - "in vec4 osg_MultiTexCoord0;\n" - "uniform mat4 osg_ModelViewProjectionMatrix;\n" - "out vec2 texCoord;\n" - "out vec4 vertexColor;\n" - "void main(void)\n" - "{\n" - " gl_Position = osg_ModelViewProjectionMatrix * osg_Vertex;\n" - " texCoord = osg_MultiTexCoord0.xy;\n" - " vertexColor = osg_Color; \n" - "}\n" -}; - -static const char *gl3TextFragmentShader = { - "#version 330 core\n" - "uniform sampler2D glyphTexture;\n" - "in vec2 texCoord;\n" - "in vec4 vertexColor;\n" - "out vec4 color;\n" - "void main(void)\n" - "{\n" - " if (texCoord.x>=0.0) color = vertexColor * vec4(1.0, 1.0, 1.0, texture(glyphTexture, texCoord).r);\n" - " else color = vertexColor;\n" - "}\n" -}; -#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" - " if (texCoord.x>=0.0) gl_FragColor = vertexColor * vec4(1.0, 1.0, 1.0, texture(glyphTexture, texCoord).r);\n" - " else gl_FragColor = vertexColor;\n" - "}\n" -}; - osg::Group* createHUDText() { @@ -105,20 +48,10 @@ osg::Group* createHUDText() osg::Geode* geode = new osg::Geode; rootNode->addChild(geode); - bool useVBOs = false; -#if defined(OSG_GL3_AVAILABLE) && !defined(OSG_GL2_AVAILABLE) && !defined(OSG_GL1_AVAILABLE) - useVBOs = true; - osg::Program* program = new osg::Program; - program->addShader(new osg::Shader(osg::Shader::VERTEX, gl3TextVertexShader)); - program->addShader(new osg::Shader(osg::Shader::FRAGMENT, gl3TextFragmentShader)); - rootNode->getOrCreateStateSet()->setAttributeAndModes(program, osg::StateAttribute::ON); -#endif - float windowHeight = 1024.0f; float windowWidth = 1280.0f; float margin = 50.0f; - //////////////////////////////////////////////////////////////////////////////////////////////////////// // // Examples of how to set up different text layout @@ -129,7 +62,6 @@ osg::Group* createHUDText() { osgText::Text* text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setFont(font); text->setColor(layoutColor); text->setCharacterSize(layoutCharacterSize); @@ -145,7 +77,6 @@ osg::Group* createHUDText() { osgText::Text* text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setFont(font); text->setColor(layoutColor); text->setCharacterSize(layoutCharacterSize); @@ -161,7 +92,6 @@ osg::Group* createHUDText() { osgText::Text* text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setFont(font); text->setColor(layoutColor); text->setPosition(osg::Vec3(margin,windowHeight-margin,0.0f)); @@ -187,7 +117,6 @@ osg::Group* createHUDText() { osgText::Text* text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setFont(font); text->setColor(fontSizeColor); text->setCharacterSize(fontSizeCharacterSize); @@ -203,7 +132,6 @@ osg::Group* createHUDText() cursor.y() -= fontSizeCharacterSize; { osgText::Text* text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setFont(font); text->setColor(fontSizeColor); text->setCharacterSize(fontSizeCharacterSize); @@ -219,7 +147,6 @@ osg::Group* createHUDText() cursor.y() -= fontSizeCharacterSize; { osgText::Text* text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setFont(font); text->setColor(fontSizeColor); text->setCharacterSize(fontSizeCharacterSize); @@ -244,7 +171,6 @@ osg::Group* createHUDText() { osgText::Text* text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setFont(font); text->setColor(characterSizeColor); text->setFontResolution(20,20); @@ -260,7 +186,6 @@ osg::Group* createHUDText() cursor.y() -= 30.0f; { osgText::Text* text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setFont(font); text->setColor(characterSizeColor); text->setFontResolution(30,30); @@ -276,7 +201,6 @@ osg::Group* createHUDText() cursor.y() -= 50.0f; { osgText::Text* text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setFont(font); text->setColor(characterSizeColor); text->setFontResolution(40,40); @@ -368,7 +292,6 @@ osg::Group* createHUDText() { osg::ref_ptr text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setColor(fontColor); text->setPosition(cursor); text->setCharacterSize(fontCharacterSize); @@ -384,7 +307,6 @@ osg::Group* createHUDText() osg::ref_ptr arial = osgText::readRefFontFile("fonts/arial.ttf"); osg::ref_ptr text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setColor(fontColor); text->setPosition(cursor); text->setCharacterSize(fontCharacterSize); @@ -402,7 +324,6 @@ osg::Group* createHUDText() osg::ref_ptr times = osgText::readRefFontFile("fonts/times.ttf"); osg::ref_ptr text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setColor(fontColor); text->setPosition(cursor); text->setCharacterSize(fontCharacterSize); @@ -423,7 +344,6 @@ osg::Group* createHUDText() osg::ref_ptr dirtydoz = osgText::readRefFontFile("fonts/dirtydoz.ttf"); osg::ref_ptr text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setColor(fontColor); text->setPosition(cursor); text->setCharacterSize(fontCharacterSize); @@ -441,7 +361,6 @@ osg::Group* createHUDText() osg::ref_ptr fudd = osgText::readRefFontFile("fonts/fudd.ttf"); osg::ref_ptr text = new osgText::Text; - text->setUseVertexBufferObjects(useVBOs); text->setColor(fontColor); text->setPosition(cursor); text->setCharacterSize(fontCharacterSize); @@ -467,16 +386,6 @@ osg::Group* create3DText(const osg::Vec3& center,float radius) osg::Geode* geode = new osg::Geode; - bool useVBOs = false; -#if defined(OSG_GL3_AVAILABLE) && !defined(OSG_GL2_AVAILABLE) && !defined(OSG_GL1_AVAILABLE) - useVBOs = true; - osg::Program* program = new osg::Program; - program->addShader(new osg::Shader(osg::Shader::VERTEX, gl3TextVertexShader)); - program->addShader(new osg::Shader(osg::Shader::FRAGMENT, gl3TextFragmentShader)); - geode->getOrCreateStateSet()->setAttributeAndModes(program, osg::StateAttribute::ON); -#endif - - //////////////////////////////////////////////////////////////////////////////////////////////////////// // // Examples of how to set up axis/orientation alignments @@ -488,7 +397,6 @@ osg::Group* create3DText(const osg::Vec3& center,float radius) osg::Vec3 pos(center.x()-radius*.5f,center.y()-radius*.5f,center.z()-radius*.5f); osgText::Text* text1 = new osgText::Text; - text1->setUseVertexBufferObjects(useVBOs); text1->setFont("fonts/times.ttf"); text1->setCharacterSize(characterSize); text1->setPosition(pos); @@ -497,7 +405,6 @@ osg::Group* create3DText(const osg::Vec3& center,float radius) geode->addDrawable(text1); osgText::Text* text2 = new osgText::Text; - text2->setUseVertexBufferObjects(useVBOs); text2->setFont("fonts/times.ttf"); text2->setCharacterSize(characterSize); text2->setPosition(pos); @@ -506,7 +413,6 @@ osg::Group* create3DText(const osg::Vec3& center,float radius) geode->addDrawable(text2); osgText::Text* text3 = new osgText::Text; - text3->setUseVertexBufferObjects(useVBOs); text3->setFont("fonts/times.ttf"); text3->setCharacterSize(characterSize); text3->setPosition(pos); @@ -517,7 +423,6 @@ osg::Group* create3DText(const osg::Vec3& center,float radius) osg::Vec4 characterSizeModeColor(1.0f,0.0f,0.5f,1.0f); osgText::Text* text4 = new osgText::Text; - text4->setUseVertexBufferObjects(useVBOs); text4->setFont("fonts/times.ttf"); text4->setCharacterSize(characterSize); text4->setPosition(center); @@ -531,7 +436,6 @@ osg::Group* create3DText(const osg::Vec3& center,float radius) geode->addDrawable(text4); osgText::Text* text5 = new osgText::Text; - text5->setUseVertexBufferObjects(useVBOs); text5->setColor(characterSizeModeColor); text5->setFont("fonts/times.ttf"); //text5->setCharacterSize(characterSize); @@ -544,7 +448,6 @@ osg::Group* create3DText(const osg::Vec3& center,float radius) geode->addDrawable(text5); osgText::Text* text6 = new osgText::Text; - text6->setUseVertexBufferObjects(useVBOs); text6->setColor(characterSizeModeColor); text6->setFont("fonts/times.ttf"); text6->setCharacterSize(characterSize); @@ -555,7 +458,6 @@ osg::Group* create3DText(const osg::Vec3& center,float radius) geode->addDrawable(text6); osgText::Text* text7 = new osgText::Text; - text7->setUseVertexBufferObjects(useVBOs); text7->setColor(characterSizeModeColor); text7->setFont("fonts/times.ttf"); text7->setCharacterSize(characterSize); @@ -566,10 +468,11 @@ osg::Group* create3DText(const osg::Vec3& center,float radius) geode->addDrawable(text7); - +#if 0 osg::ShapeDrawable* shape = new osg::ShapeDrawable(new osg::Sphere(center,characterSize*0.2f)); shape->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::ON); geode->addDrawable(shape); +#endif osg::Group* rootNode = new osg::Group; rootNode->addChild(geode); @@ -855,21 +758,6 @@ 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)) {