diff --git a/include/osg/GLBeginEndAdapter b/include/osg/GLBeginEndAdapter index dad1578b5..813193c9d 100644 --- a/include/osg/GLBeginEndAdapter +++ b/include/osg/GLBeginEndAdapter @@ -72,6 +72,7 @@ class OSG_EXPORT GLBeginEndAdapter } void Color4fv(const GLfloat* c) { Color4f(c[0], c[1], c[2], c[3]); } + void Color4ubv(const GLubyte* c) { const float div = 1.0f/255.0f; Color4f(float(c[0])*div, float(c[1])*div, float(c[2])*div, float(c[3])*div); } void Normal3f(GLfloat x, GLfloat y, GLfloat z) { diff --git a/src/osg/ArrayDispatchers.cpp b/src/osg/ArrayDispatchers.cpp index 3a2e2e74f..711ec13f8 100644 --- a/src/osg/ArrayDispatchers.cpp +++ b/src/osg/ArrayDispatchers.cpp @@ -416,10 +416,12 @@ void ArrayDispatchers::init() _normalDispatchers->assign(Array::Vec3dArrayType, glNormal3dv, 3); _normalDispatchers->assignGLBeginEnd(Array::Vec3ArrayType, &GLBeginEndAdapter::Normal3fv, 3); + _colorDispatchers->assign(Array::Vec4ubArrayType, glColor4ubv, 4); _colorDispatchers->assign(Array::Vec3ArrayType, glColor3fv, 3); _colorDispatchers->assign(Array::Vec4ArrayType, glColor4fv, 4); _colorDispatchers->assign(Array::Vec3dArrayType, glColor3dv, 3); _colorDispatchers->assign(Array::Vec4dArrayType, glColor4dv, 4); + _colorDispatchers->assignGLBeginEnd(Array::Vec4ubArrayType, &GLBeginEndAdapter::Color4ubv, 4); _colorDispatchers->assignGLBeginEnd(Array::Vec4ArrayType, &GLBeginEndAdapter::Color4fv, 4); _secondaryColorDispatchers->assign(Array::Vec3ArrayType, extensions->_glSecondaryColor3fv, 3);