VertexArrayState
Go to the documentation of this file.
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
*
* This library is open source and may be redistributed and/or modified under
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
* (at your option) any later version. The full license is in LICENSE file
* included with this distribution, and on the openscenegraph.org website.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* OpenSceneGraph Public License for more details.
*/
#ifndef OSG_VertexArrayState
#define OSG_VertexArrayState 1
#include <osg/Referenced>
#include <osg/GLExtensions>
#include <osg/Array>
#include <osg/AttributeDispatchers>
namespace osg {
class OSG_EXPORT VertexArrayState : public osg::Referenced
{
public:
VertexArrayState(osg::State* state);
struct ArrayDispatch : public osg::Referenced
{
ArrayDispatch():
array(0),
modifiedCount(0xffffffff),
active(false) {}
virtual bool isVertexAttribDispatch() const { return false; }
virtual const char* className() const = 0; // { return "ArrayDispatch"; }
virtual void enable_and_dispatch(osg::State& /*state*/, const osg::Array* /*new_array*/) {} // = 0;
virtual void enable_and_dispatch(osg::State& /*state*/, const osg::Array* /*new_array*/, const osg::GLBufferObject* /*vbo*/) {} // = 0;
virtual void enable_and_dispatch(osg::State& /*state*/, GLint /*size*/, GLenum /*type*/, GLsizei /*stride*/, const GLvoid * /*ptr*/, GLboolean /*normalized*/) {} // = 0;
virtual void dispatch(osg::State& /*state*/, const osg::Array* /*new_array*/) {} // = 0;
virtual void dispatch(osg::State& /*state*/, const osg::Array* /*new_array*/, const osg::GLBufferObject* /*vbo*/) {} // = 0;
virtual void dispatch(osg::State& /*state*/, GLint /*size*/, GLenum /*type*/, GLsizei /*stride*/, const GLvoid * /*ptr*/, GLboolean /*normalized*/) {} // = 0;
virtual void disable(osg::State& /*state*/) {} // = 0;
const osg::Array* array;
unsigned int modifiedCount;
bool active;
};
typedef std::vector< ref_ptr<ArrayDispatch> > ArrayDispatchList;
void setCurrentVertexBufferObject(osg::GLBufferObject* vbo) { _currentVBO = vbo; }
GLBufferObject* getCurrentVertexBufferObject() { return _currentVBO; }
inline void bindVertexBufferObject(osg::GLBufferObject* vbo)
{
if (vbo->isDirty())
{
vbo->compileBuffer();
_currentVBO = vbo;
}
else if (vbo != _currentVBO)
{
vbo->bindBuffer();
_currentVBO = vbo;
}
}
inline void unbindVertexBufferObject()
{
if (!_currentVBO) return;
_ext->glBindBuffer(GL_ARRAY_BUFFER_ARB,0);
_currentVBO = 0;
}
void setCurrentElementBufferObject(osg::GLBufferObject* ebo) { _currentEBO = ebo; }
GLBufferObject* getCurrentElementBufferObject() { return _currentEBO; }
inline void bindElementBufferObject(osg::GLBufferObject* ebo)
{
if (ebo->isDirty())
{
ebo->compileBuffer();
_currentEBO = ebo;
}
else if (ebo != _currentEBO)
{
ebo->bindBuffer();
_currentEBO = ebo;
}
}
inline void unbindElementBufferObject()
{
if (!_currentEBO) return;
_ext->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB,0);
_currentEBO = 0;
}
void resetBufferObjectPointers() { _currentVBO = 0; _currentEBO = 0; }
bool correctArrayDispatchAssigned(const ArrayDispatch* ad);
void assignAllDispatchers();
void assignVertexArrayDispatcher();
void assignNormalArrayDispatcher();
void assignColorArrayDispatcher();
void assignSecondaryColorArrayDispatcher();
void assignFogCoordArrayDispatcher();
void assignTexCoordArrayDispatcher(unsigned int numUnits);
void assignVertexAttribArrayDispatcher(unsigned int numUnits);
inline void setVertexBufferObjectSupported(bool flag) { _isVertexBufferObjectSupported = flag; }
inline bool isVertexBufferObjectSupported() const { return _isVertexBufferObjectSupported; }
void setArray(ArrayDispatch* vad, osg::State& state, const osg::Array* new_array);
void setArray(ArrayDispatch* vad, osg::State& state, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized);
inline void disable(ArrayDispatch* vad, osg::State& state) { vad->disable(state); vad->array=0; vad->modifiedCount=0xffffffff; vad->active=false; }
void setInterleavedArrays( osg::State& state, GLenum format, GLsizei stride, const GLvoid* pointer);
inline void setVertexArray(osg::State& state, const osg::Array* array) { setArray(_vertexArray.get(), state, array); }
inline void setVertexArray(osg::State& state, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE) { setArray(_vertexArray.get(), state, size, type, stride, ptr, normalized); }
inline void disableVertexArray(osg::State& state) { disable(_vertexArray.get(), state); }
inline void setNormalArray(osg::State& state, const osg::Array* array) { setArray(_normalArray.get(), state, array); }
inline void setNormalArray(osg::State& state, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE ) { setArray(_normalArray.get(), state, 3, type, stride, ptr, normalized); }
inline void disableNormalArray(osg::State& state) { disable(_normalArray.get(), state); }
inline void setColorArray(osg::State& state, const osg::Array* array) { setArray(_colorArray.get(), state, array); }
inline void setColorArray(osg::State& state, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_TRUE ) { setArray(_colorArray.get(), state, size, type, stride, ptr, normalized); }
inline void disableColorArray(osg::State& state) { disable(_colorArray.get(), state); }
inline void setSecondaryColorArray(osg::State& state, const osg::Array* array) { setArray(_secondaryColorArray.get(), state, array); }
inline void disableSecondaryColorArray(osg::State& state) { disable(_secondaryColorArray.get(), state); }
inline void setFogCoordArray(osg::State& state, const osg::Array* array) { setArray(_fogCoordArray.get(), state, array); }
inline void disableFogCoordArray(osg::State& state) { disable(_fogCoordArray.get(), state); }
inline void setTexCoordArray(osg::State& state, unsigned int unit, const osg::Array* array) { setArray(_texCoordArrays[unit].get(), state, array); }
inline void setTexCoordArray(osg::State& state, unsigned int unit, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE ) { setArray(_texCoordArrays[unit].get(), state, size, type, stride, ptr, normalized); }
inline void disableTexCoordArray(osg::State& state, unsigned int unit) { disable(_texCoordArrays[unit].get(),state); }
inline void disableTexCoordArrayAboveAndIncluding(osg::State& state, unsigned int index);
inline void setVertexAttribArray(osg::State& state, unsigned int unit, const osg::Array* array) { setArray(_vertexAttribArrays[unit].get(), state, array); }
inline void disableVertexAttribArray(osg::State& state, unsigned int unit) { disable(_vertexAttribArrays[unit].get(), state); }
inline void disableVertexAttribArrayAboveAndIncluding(osg::State& state, unsigned int index);
inline void lazyDisablingOfVertexAttributes();
inline void applyDisablingOfVertexAttributes(osg::State& state);
// Verex Array Object methods.
void generateVertexArrayObject();
void deleteVertexArrayObject();
GLuint getVertexArrayObject() const { return _vertexArrayObject; }
void setRequiresSetArrays(bool flag) { _requiresSetArrays = flag; }
bool getRequiresSetArrays() const { return _requiresSetArrays; }
void dirty();
void release();
public:
virtual ~VertexArrayState();
// osg::GLBufferObject* getGLBufferObject(osg::Array* array);
osg::State* _state;
osg::ref_ptr<ObserverSet> _stateObserverSet;
osg::ref_ptr<osg::GLExtensions> _ext;
bool _isVertexBufferObjectSupported;
GLuint _vertexArrayObject;
osg::ref_ptr<ArrayDispatch> _vertexArray;
osg::ref_ptr<ArrayDispatch> _normalArray;
osg::ref_ptr<ArrayDispatch> _colorArray;
osg::ref_ptr<ArrayDispatch> _secondaryColorArray;
osg::ref_ptr<ArrayDispatch> _fogCoordArray;
ArrayDispatchList _texCoordArrays;
ArrayDispatchList _vertexAttribArrays;
typedef std::vector<ArrayDispatch*> ActiveDispatchers;
ActiveDispatchers _activeDispatchers;
ActiveDispatchers _previous_activeDispatchers;
GLBufferObject* _currentVBO;
GLBufferObject* _currentEBO;
bool _requiresSetArrays;
};
class OSG_EXPORT VertexArrayStateList
{
public:
VertexArrayStateList();
VertexArrayStateList& operator = (const VertexArrayStateList& rhs);
inline void clear() { _array.clear(); }
inline bool empty() const { return _array.empty(); }
inline unsigned int size() const { return _array.size(); }
inline void resize(unsigned int newSize) { _array.resize(newSize); }
inline ref_ptr<VertexArrayState>& operator[] (unsigned int pos)
{
// automatically resize array.
if (_array.size()<=pos)
_array.resize(pos+1,0);
return _array[pos];
}
inline const ref_ptr<VertexArrayState>& operator[] (unsigned int pos) const
{
// automatically resize array.
if (_array.size()<=pos)
_array.resize(pos+1,0);
return _array[pos];
}
void assignAllDispatchers();
void assignVertexArrayDispatcher();
void assignNormalArrayDispatcher();
void assignColorArrayDispatcher();
void assignSecondaryColorArrayDispatcher();
void assignFogCoordArrayDispatcher();
void assignTexCoordArrayDispatcher(unsigned int numUnits);
void assignVertexAttribArrayDispatcher(unsigned int numUnits);
protected:
typedef std::vector< osg::ref_ptr<VertexArrayState> > Array;
mutable Array _array;
};
inline void VertexArrayState::lazyDisablingOfVertexAttributes()
{
_activeDispatchers.swap(_previous_activeDispatchers);
_activeDispatchers.clear();
for(ActiveDispatchers::iterator itr = _previous_activeDispatchers.begin();
itr != _previous_activeDispatchers.end();
++itr)
{
ArrayDispatch* ad = (*itr);
// ad->array = 0;
ad->active = false;
}
}
inline void VertexArrayState::applyDisablingOfVertexAttributes(osg::State& state)
{
for(ActiveDispatchers::iterator itr = _previous_activeDispatchers.begin();
itr != _previous_activeDispatchers.end();
++itr)
{
ArrayDispatch* ad = (*itr);
if (!ad->active)
{
ad->disable(state);
ad->array = 0;
ad->modifiedCount = 0xffffffff;
}
}
_previous_activeDispatchers.clear();
}
inline void VertexArrayState::disableTexCoordArrayAboveAndIncluding(osg::State& state, unsigned int index)
{
for(unsigned int i=index; i<_texCoordArrays.size(); ++i)
{
disable(_texCoordArrays[i].get(), state);
}
}
inline void VertexArrayState::disableVertexAttribArrayAboveAndIncluding(osg::State& state, unsigned int index)
{
for(unsigned int i=index; i<_vertexAttribArrays.size(); ++i)
{
disable(_vertexAttribArrays[i].get(), state);
}
}
}
#endif
Array
AttributeDispatchers
GL_ARRAY_BUFFER_ARB
#define GL_ARRAY_BUFFER_ARB
Definition BufferObject:30
GL_ELEMENT_ARRAY_BUFFER_ARB
#define GL_ELEMENT_ARRAY_BUFFER_ARB
Definition BufferObject:31
GLExtensions
Referenced
osg::Array
Definition Array:61
osg::GLBufferObject
Definition BufferObject:164
osg::GLBufferObject::compileBuffer
void compileBuffer()
osg::GLBufferObject::bindBuffer
void bindBuffer()
Definition BufferObject:771
osg::GLBufferObject::isDirty
bool isDirty() const
Definition BufferObject:222
osg::Referenced
Definition Referenced:44
osg::State
Definition State:80
osg::VertexArrayStateList::resize
void resize(unsigned int newSize)
Definition VertexArrayState:232
osg::VertexArrayStateList::empty
bool empty() const
Definition VertexArrayState:228
osg::VertexArrayStateList::assignVertexArrayDispatcher
void assignVertexArrayDispatcher()
osg::VertexArrayStateList::assignColorArrayDispatcher
void assignColorArrayDispatcher()
osg::VertexArrayStateList::_array
Array _array
Definition VertexArrayState:265
osg::VertexArrayStateList::assignFogCoordArrayDispatcher
void assignFogCoordArrayDispatcher()
osg::VertexArrayStateList::clear
void clear()
Definition VertexArrayState:226
osg::VertexArrayStateList::assignNormalArrayDispatcher
void assignNormalArrayDispatcher()
osg::VertexArrayStateList::VertexArrayStateList
VertexArrayStateList()
osg::VertexArrayStateList::size
unsigned int size() const
Definition VertexArrayState:230
osg::VertexArrayStateList::assignTexCoordArrayDispatcher
void assignTexCoordArrayDispatcher(unsigned int numUnits)
osg::VertexArrayStateList::assignVertexAttribArrayDispatcher
void assignVertexAttribArrayDispatcher(unsigned int numUnits)
osg::VertexArrayStateList::assignSecondaryColorArrayDispatcher
void assignSecondaryColorArrayDispatcher()
osg::VertexArrayStateList::assignAllDispatchers
void assignAllDispatchers()
osg::VertexArrayStateList::Array
std::vector< osg::ref_ptr< VertexArrayState > > Array
Definition VertexArrayState:264
osg::VertexArrayState::dirty
void dirty()
osg::VertexArrayState::setArray
void setArray(ArrayDispatch *vad, osg::State &state, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized)
osg::VertexArrayState::_secondaryColorArray
osg::ref_ptr< ArrayDispatch > _secondaryColorArray
Definition VertexArrayState:201
osg::VertexArrayState::deleteVertexArrayObject
void deleteVertexArrayObject()
osg::VertexArrayState::lazyDisablingOfVertexAttributes
void lazyDisablingOfVertexAttributes()
Definition VertexArrayState:270
osg::VertexArrayState::setInterleavedArrays
void setInterleavedArrays(osg::State &state, GLenum format, GLsizei stride, const GLvoid *pointer)
osg::VertexArrayState::setVertexArray
void setVertexArray(osg::State &state, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE)
Definition VertexArrayState:136
osg::VertexArrayState::_currentEBO
GLBufferObject * _currentEBO
Definition VertexArrayState:211
osg::VertexArrayState::generateVertexArrayObject
void generateVertexArrayObject()
osg::VertexArrayState::assignColorArrayDispatcher
void assignColorArrayDispatcher()
osg::VertexArrayState::_vertexArrayObject
GLuint _vertexArrayObject
Definition VertexArrayState:195
osg::VertexArrayState::setNormalArray
void setNormalArray(osg::State &state, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE)
Definition VertexArrayState:140
osg::VertexArrayState::assignVertexAttribArrayDispatcher
void assignVertexAttribArrayDispatcher(unsigned int numUnits)
osg::VertexArrayState::_stateObserverSet
osg::ref_ptr< ObserverSet > _stateObserverSet
Definition VertexArrayState:190
osg::VertexArrayState::bindElementBufferObject
void bindElementBufferObject(osg::GLBufferObject *ebo)
Definition VertexArrayState:90
osg::VertexArrayState::disableVertexAttribArray
void disableVertexAttribArray(osg::State &state, unsigned int unit)
Definition VertexArrayState:159
osg::VertexArrayState::_isVertexBufferObjectSupported
bool _isVertexBufferObjectSupported
Definition VertexArrayState:193
osg::VertexArrayState::disableNormalArray
void disableNormalArray(osg::State &state)
Definition VertexArrayState:141
osg::VertexArrayState::release
void release()
osg::VertexArrayState::applyDisablingOfVertexAttributes
void applyDisablingOfVertexAttributes(osg::State &state)
Definition VertexArrayState:285
osg::VertexArrayState::_activeDispatchers
ActiveDispatchers _activeDispatchers
Definition VertexArrayState:207
osg::VertexArrayState::_colorArray
osg::ref_ptr< ArrayDispatch > _colorArray
Definition VertexArrayState:200
osg::VertexArrayState::bindVertexBufferObject
void bindVertexBufferObject(osg::GLBufferObject *vbo)
Definition VertexArrayState:65
osg::VertexArrayState::setVertexArray
void setVertexArray(osg::State &state, const osg::Array *array)
Definition VertexArrayState:135
osg::VertexArrayState::disable
void disable(ArrayDispatch *vad, osg::State &state)
Definition VertexArrayState:131
osg::VertexArrayState::assignSecondaryColorArrayDispatcher
void assignSecondaryColorArrayDispatcher()
osg::VertexArrayState::_currentVBO
GLBufferObject * _currentVBO
Definition VertexArrayState:210
osg::VertexArrayState::_ext
osg::ref_ptr< osg::GLExtensions > _ext
Definition VertexArrayState:191
osg::VertexArrayState::getCurrentElementBufferObject
GLBufferObject * getCurrentElementBufferObject()
Definition VertexArrayState:88
osg::VertexArrayState::assignTexCoordArrayDispatcher
void assignTexCoordArrayDispatcher(unsigned int numUnits)
osg::VertexArrayState::disableTexCoordArrayAboveAndIncluding
void disableTexCoordArrayAboveAndIncluding(osg::State &state, unsigned int index)
Definition VertexArrayState:302
osg::VertexArrayState::ActiveDispatchers
std::vector< ArrayDispatch * > ActiveDispatchers
Definition VertexArrayState:206
osg::VertexArrayState::getRequiresSetArrays
bool getRequiresSetArrays() const
Definition VertexArrayState:177
osg::VertexArrayState::getVertexArrayObject
GLuint getVertexArrayObject() const
Definition VertexArrayState:173
osg::VertexArrayState::setArray
void setArray(ArrayDispatch *vad, osg::State &state, const osg::Array *new_array)
osg::VertexArrayState::assignNormalArrayDispatcher
void assignNormalArrayDispatcher()
osg::VertexArrayState::disableColorArray
void disableColorArray(osg::State &state)
Definition VertexArrayState:145
osg::VertexArrayState::getCurrentVertexBufferObject
GLBufferObject * getCurrentVertexBufferObject()
Definition VertexArrayState:63
osg::VertexArrayState::assignFogCoordArrayDispatcher
void assignFogCoordArrayDispatcher()
osg::VertexArrayState::setVertexAttribArray
void setVertexAttribArray(osg::State &state, unsigned int unit, const osg::Array *array)
Definition VertexArrayState:158
osg::VertexArrayState::resetBufferObjectPointers
void resetBufferObjectPointers()
Definition VertexArrayState:111
osg::VertexArrayState::setTexCoordArray
void setTexCoordArray(osg::State &state, unsigned int unit, const osg::Array *array)
Definition VertexArrayState:153
osg::VertexArrayState::disableVertexAttribArrayAboveAndIncluding
void disableVertexAttribArrayAboveAndIncluding(osg::State &state, unsigned int index)
Definition VertexArrayState:310
osg::VertexArrayState::_requiresSetArrays
bool _requiresSetArrays
Definition VertexArrayState:213
osg::VertexArrayState::unbindElementBufferObject
void unbindElementBufferObject()
Definition VertexArrayState:104
osg::VertexArrayState::setTexCoordArray
void setTexCoordArray(osg::State &state, unsigned int unit, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE)
Definition VertexArrayState:154
osg::VertexArrayState::assignVertexArrayDispatcher
void assignVertexArrayDispatcher()
osg::VertexArrayState::unbindVertexBufferObject
void unbindVertexBufferObject()
Definition VertexArrayState:79
osg::VertexArrayState::assignAllDispatchers
void assignAllDispatchers()
osg::VertexArrayState::_texCoordArrays
ArrayDispatchList _texCoordArrays
Definition VertexArrayState:203
osg::VertexArrayState::_state
osg::State * _state
Definition VertexArrayState:189
osg::VertexArrayState::disableFogCoordArray
void disableFogCoordArray(osg::State &state)
Definition VertexArrayState:151
osg::VertexArrayState::_vertexArray
osg::ref_ptr< ArrayDispatch > _vertexArray
Definition VertexArrayState:198
osg::VertexArrayState::setSecondaryColorArray
void setSecondaryColorArray(osg::State &state, const osg::Array *array)
Definition VertexArrayState:147
osg::VertexArrayState::setFogCoordArray
void setFogCoordArray(osg::State &state, const osg::Array *array)
Definition VertexArrayState:150
osg::VertexArrayState::setNormalArray
void setNormalArray(osg::State &state, const osg::Array *array)
Definition VertexArrayState:139
osg::VertexArrayState::setCurrentVertexBufferObject
void setCurrentVertexBufferObject(osg::GLBufferObject *vbo)
Definition VertexArrayState:62
osg::VertexArrayState::isVertexBufferObjectSupported
bool isVertexBufferObjectSupported() const
Definition VertexArrayState:126
osg::VertexArrayState::~VertexArrayState
virtual ~VertexArrayState()
osg::VertexArrayState::_fogCoordArray
osg::ref_ptr< ArrayDispatch > _fogCoordArray
Definition VertexArrayState:202
osg::VertexArrayState::disableTexCoordArray
void disableTexCoordArray(osg::State &state, unsigned int unit)
Definition VertexArrayState:155
osg::VertexArrayState::setVertexBufferObjectSupported
void setVertexBufferObjectSupported(bool flag)
Definition VertexArrayState:125
osg::VertexArrayState::ArrayDispatchList
std::vector< ref_ptr< ArrayDispatch > > ArrayDispatchList
Definition VertexArrayState:60
osg::VertexArrayState::setColorArray
void setColorArray(osg::State &state, const osg::Array *array)
Definition VertexArrayState:143
osg::VertexArrayState::setRequiresSetArrays
void setRequiresSetArrays(bool flag)
Definition VertexArrayState:176
osg::VertexArrayState::disableVertexArray
void disableVertexArray(osg::State &state)
Definition VertexArrayState:137
osg::VertexArrayState::_normalArray
osg::ref_ptr< ArrayDispatch > _normalArray
Definition VertexArrayState:199
osg::VertexArrayState::setCurrentElementBufferObject
void setCurrentElementBufferObject(osg::GLBufferObject *ebo)
Definition VertexArrayState:87
osg::VertexArrayState::correctArrayDispatchAssigned
bool correctArrayDispatchAssigned(const ArrayDispatch *ad)
osg::VertexArrayState::setColorArray
void setColorArray(osg::State &state, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_TRUE)
Definition VertexArrayState:144
osg::VertexArrayState::VertexArrayState
VertexArrayState(osg::State *state)
osg::VertexArrayState::_previous_activeDispatchers
ActiveDispatchers _previous_activeDispatchers
Definition VertexArrayState:208
osg::VertexArrayState::_vertexAttribArrays
ArrayDispatchList _vertexAttribArrays
Definition VertexArrayState:204
osg::VertexArrayState::disableSecondaryColorArray
void disableSecondaryColorArray(osg::State &state)
Definition VertexArrayState:148
osg::ref_ptr
Definition ref_ptr:32
osg
Definition AlphaFunc:19
osg::get
T * get(unsigned int contextID)
Definition ContextData:152
OSG_EXPORT
#define OSG_EXPORT
Definition osg/Export:39
osg::VertexArrayState::ArrayDispatch
Definition VertexArrayState:31
osg::VertexArrayState::ArrayDispatch::enable_and_dispatch
virtual void enable_and_dispatch(osg::State &, const osg::Array *, const osg::GLBufferObject *)
Definition VertexArrayState:43
osg::VertexArrayState::ArrayDispatch::dispatch
virtual void dispatch(osg::State &, const osg::Array *)
Definition VertexArrayState:47
osg::VertexArrayState::ArrayDispatch::className
virtual const char * className() const =0
osg::VertexArrayState::ArrayDispatch::dispatch
virtual void dispatch(osg::State &, GLint, GLenum, GLsizei, const GLvoid *, GLboolean)
Definition VertexArrayState:51
osg::VertexArrayState::ArrayDispatch::enable_and_dispatch
virtual void enable_and_dispatch(osg::State &, GLint, GLenum, GLsizei, const GLvoid *, GLboolean)
Definition VertexArrayState:45
osg::VertexArrayState::ArrayDispatch::isVertexAttribDispatch
virtual bool isVertexAttribDispatch() const
Definition VertexArrayState:37
osg::VertexArrayState::ArrayDispatch::ArrayDispatch
ArrayDispatch()
Definition VertexArrayState:32
osg::VertexArrayState::ArrayDispatch::disable
virtual void disable(osg::State &)
Definition VertexArrayState:53
osg::VertexArrayState::ArrayDispatch::active
bool active
Definition VertexArrayState:57
osg::VertexArrayState::ArrayDispatch::enable_and_dispatch
virtual void enable_and_dispatch(osg::State &, const osg::Array *)
Definition VertexArrayState:41
osg::VertexArrayState::ArrayDispatch::array
const osg::Array * array
Definition VertexArrayState:55
osg::VertexArrayState::ArrayDispatch::dispatch
virtual void dispatch(osg::State &, const osg::Array *, const osg::GLBufferObject *)
Definition VertexArrayState:49
osg::VertexArrayState::ArrayDispatch::modifiedCount
unsigned int modifiedCount
Definition VertexArrayState:56