From 36366f61d50d57eef15320819f96a27b3f043aac Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 21 Jun 2010 16:48:03 +0000 Subject: [PATCH] From Mathias Fiedler, "i'm using OSG on ES 2.0 and observed that only one texture unit will be supported by OSG. In State::initializeExtensionProcs() the _glMaxTextureUnits is calculated based on osg::getGLVersionNumber(). At least for ES 2.0 this function will return 0.f since the version string will look like "OpenGL ES 2.0 ...". My proposal doesn't touch getGLVersionNumber(), since desktop OpenGL 2.0 isn't OpenGL ES 2.0. So i changed the conditions in State::initializeExtensionProcs() for getting the number via glGetIntegerv()." --- src/osg/State.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/osg/State.cpp b/src/osg/State.cpp index 9fd21148f..37a14fa71 100644 --- a/src/osg/State.cpp +++ b/src/osg/State.cpp @@ -812,14 +812,15 @@ void State::initializeExtensionProcs() setGLExtensionFuncPtr(_glDrawArraysInstanced, "glDrawArraysInstanced","glDrawArraysInstancedARB","glDrawArraysInstancedEXT"); setGLExtensionFuncPtr(_glDrawElementsInstanced, "glDrawElementsInstanced","glDrawElementsInstancedARB","glDrawElementsInstancedEXT"); - if ( osg::getGLVersionNumber() >= 2.0 || osg::isGLExtensionSupported(_contextID,"GL_ARB_vertex_shader") ) + if ( osg::getGLVersionNumber() >= 2.0 || osg::isGLExtensionSupported(_contextID,"GL_ARB_vertex_shader") || OSG_GLES2_FEATURES) { glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,&_glMaxTextureUnits); glGetIntegerv(GL_MAX_TEXTURE_COORDS,&_glMaxTextureCoords); } else if ( osg::getGLVersionNumber() >= 1.3 || osg::isGLExtensionSupported(_contextID,"GL_ARB_multitexture") || - osg::isGLExtensionSupported(_contextID,"GL_EXT_multitexture") ) + osg::isGLExtensionSupported(_contextID,"GL_EXT_multitexture") || + OSG_GLES1_FEATURES) { GLint maxTextureUnits; glGetIntegerv(GL_MAX_TEXTURE_UNITS,&maxTextureUnits);