diff --git a/include/osg/ArrayDispatchers b/include/osg/ArrayDispatchers index 183392699..2d5d7b57f 100644 --- a/include/osg/ArrayDispatchers +++ b/include/osg/ArrayDispatchers @@ -50,20 +50,16 @@ class OSG_EXPORT ArrayDispatchers : public osg::Referenced if (at) _activeDispatchList[binding].push_back(at); } - void activateVertexArray(osg::Array* array) { if (array && array->getBinding()>osg::Array::BIND_OFF) activate(array->getBinding(), vertexDispatcher(array)); } void activateColorArray(osg::Array* array) { if (array && array->getBinding()>osg::Array::BIND_OFF) activate(array->getBinding(), colorDispatcher(array)); } void activateNormalArray(osg::Array* array) { if (array && array->getBinding()>osg::Array::BIND_OFF) activate(array->getBinding(), normalDispatcher(array)); } void activateSecondaryColorArray(osg::Array* array) { if (array && array->getBinding()>osg::Array::BIND_OFF) activate(array->getBinding(), secondaryColorDispatcher(array)); } void activateFogCoordArray(osg::Array* array) { if (array && array->getBinding()>osg::Array::BIND_OFF) activate(array->getBinding(), fogCoordDispatcher(array)); } - void activateTexCoordArray(unsigned int unit, osg::Array* array) { if (array && array->getBinding()>osg::Array::BIND_OFF) activate(array->getBinding(), texCoordDispatcher(unit, array)); } void activateVertexAttribArray(unsigned int unit, osg::Array* array) { if (array && array->getBinding()>osg::Array::BIND_OFF) activate(array->getBinding(), vertexAttribDispatcher(unit, array)); } - AttributeDispatch* vertexDispatcher(Array* array); AttributeDispatch* normalDispatcher(Array* array); AttributeDispatch* colorDispatcher(Array* array); AttributeDispatch* secondaryColorDispatcher(Array* array); AttributeDispatch* fogCoordDispatcher(Array* array); - AttributeDispatch* texCoordDispatcher(unsigned int unit, Array* array); AttributeDispatch* vertexAttribDispatcher(unsigned int unit, Array* array); void dispatch(unsigned int binding, unsigned int index) @@ -89,14 +85,12 @@ class OSG_EXPORT ArrayDispatchers : public osg::Referenced bool _initialized; State* _state; - AttributeDispatchMap* _vertexDispatchers; AttributeDispatchMap* _normalDispatchers; AttributeDispatchMap* _colorDispatchers; AttributeDispatchMap* _secondaryColorDispatchers; AttributeDispatchMap* _fogCoordDispatchers; typedef std::vector AttributeDispatchMapList; - AttributeDispatchMapList _texCoordDispatchers; AttributeDispatchMapList _vertexAttribDispatchers; typedef std::vector AttributeDispatchList; diff --git a/src/osg/ArrayDispatchers.cpp b/src/osg/ArrayDispatchers.cpp index d65998197..f0fb650db 100644 --- a/src/osg/ArrayDispatchers.cpp +++ b/src/osg/ArrayDispatchers.cpp @@ -144,7 +144,6 @@ public: ArrayDispatchers::ArrayDispatchers(): _initialized(false), _state(0), - _vertexDispatchers(0), _normalDispatchers(0), _colorDispatchers(0), _secondaryColorDispatchers(0), @@ -156,19 +155,11 @@ ArrayDispatchers::ArrayDispatchers(): ArrayDispatchers::~ArrayDispatchers() { - delete _vertexDispatchers; delete _normalDispatchers; delete _colorDispatchers; delete _secondaryColorDispatchers; delete _fogCoordDispatchers; - for(AttributeDispatchMapList::iterator itr = _texCoordDispatchers.begin(); - itr != _texCoordDispatchers.end(); - ++itr) - { - delete *itr; - } - for(AttributeDispatchMapList::iterator itr = _vertexAttribDispatchers.begin(); itr != _vertexAttribDispatchers.end(); ++itr) @@ -188,7 +179,6 @@ void ArrayDispatchers::init() _initialized = true; - _vertexDispatchers = new AttributeDispatchMap(); _normalDispatchers = new AttributeDispatchMap(); _colorDispatchers = new AttributeDispatchMap(); _secondaryColorDispatchers = new AttributeDispatchMap(); @@ -198,13 +188,6 @@ void ArrayDispatchers::init() #ifdef OSG_GL_VERTEX_FUNCS_AVAILABLE GLExtensions* extensions = _state->get(); - #ifndef OSG_GLES1_AVAILABLE - _vertexDispatchers->assign(Array::Vec2ArrayType, glVertex2fv, 2); - _vertexDispatchers->assign(Array::Vec3ArrayType, glVertex3fv, 3); - _vertexDispatchers->assign(Array::Vec2dArrayType, glVertex2dv, 2); - _vertexDispatchers->assign(Array::Vec3dArrayType, glVertex3dv, 3); - #endif - _normalDispatchers->assign(Array::Vec3bArrayType, glNormal3bv, 3); _normalDispatchers->assign(Array::Vec3sArrayType, glNormal3sv, 3); _normalDispatchers->assign(Array::Vec3ArrayType, glNormal3fv, 3); @@ -229,12 +212,6 @@ void ArrayDispatchers::init() // // With inidices // -AttributeDispatch* ArrayDispatchers::vertexDispatcher(Array* array) -{ - return _useVertexAttribAlias ? - vertexAttribDispatcher(_state->getVertexAlias()._location, array) : - _vertexDispatchers->dispatcher(array); -} AttributeDispatch* ArrayDispatchers::normalDispatcher(Array* array) { @@ -264,48 +241,12 @@ AttributeDispatch* ArrayDispatchers::fogCoordDispatcher(Array* array) _fogCoordDispatchers->dispatcher(array); } -AttributeDispatch* ArrayDispatchers::texCoordDispatcher(unsigned int unit, Array* array) -{ - if (_useVertexAttribAlias) return vertexAttribDispatcher(_state->getTexCoordAliasList()[unit]._location, array); - - if (unit>=_texCoordDispatchers.size()) assignTexCoordDispatchers(unit); - return _texCoordDispatchers[unit]->dispatcher(array); -} - AttributeDispatch* ArrayDispatchers::vertexAttribDispatcher(unsigned int unit, Array* array) { if (unit>=_vertexAttribDispatchers.size()) assignVertexAttribDispatchers(unit); return _vertexAttribDispatchers[unit]->dispatcher(array); } -void ArrayDispatchers::assignTexCoordDispatchers(unsigned int unit) -{ - #if defined(OSG_GL_VERTEX_FUNCS_AVAILABLE) && !defined(OSG_GLES1_AVAILABLE) - GLExtensions* extensions = _state->get(); - - for(unsigned int i=_texCoordDispatchers.size(); i<=unit; ++i) - { - _texCoordDispatchers.push_back(new AttributeDispatchMap()); - AttributeDispatchMap& texCoordDispatcher = *_texCoordDispatchers[i]; - if (i==0) - { - texCoordDispatcher.assign(Array::FloatArrayType, glTexCoord1fv, 1); - texCoordDispatcher.assign(Array::Vec2ArrayType, glTexCoord2fv, 2); - texCoordDispatcher.assign(Array::Vec3ArrayType, glTexCoord3fv, 3); - texCoordDispatcher.assign(Array::Vec4ArrayType, glTexCoord4fv, 4); - } - else - { - texCoordDispatcher.targetAssign((GLenum)(GL_TEXTURE0+i), Array::FloatArrayType, extensions->glMultiTexCoord1fv, 1); - texCoordDispatcher.targetAssign((GLenum)(GL_TEXTURE0+i), Array::Vec2ArrayType, extensions->glMultiTexCoord2fv, 2); - texCoordDispatcher.targetAssign((GLenum)(GL_TEXTURE0+i), Array::Vec3ArrayType, extensions->glMultiTexCoord3fv, 3); - texCoordDispatcher.targetAssign((GLenum)(GL_TEXTURE0+i), Array::Vec4ArrayType, extensions->glMultiTexCoord4fv, 4); - } - } - #endif - -} - void ArrayDispatchers::assignVertexAttribDispatchers(unsigned int unit) { GLExtensions* extensions = _state->get();