14#ifndef OSG_VertexArrayState
15#define OSG_VertexArrayState 1
34 modifiedCount(0xffffffff),
72 else if (vbo != _currentVBO)
81 if (!_currentVBO)
return;
97 else if (ebo != _currentEBO)
106 if (!_currentEBO)
return;
136 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); }
140 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); }
144 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); }
154 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); }
156 inline void disableTexCoordArrayAboveAndIncluding(
osg::State& state,
unsigned int index);
160 inline void disableVertexAttribArrayAboveAndIncluding(
osg::State& state,
unsigned int index);
163 inline void lazyDisablingOfVertexAttributes();
166 inline void applyDisablingOfVertexAttributes(
osg::State& state);
226 inline void clear() { _array.clear(); }
228 inline bool empty()
const {
return _array.empty(); }
230 inline unsigned int size()
const {
return _array.size(); }
232 inline void resize(
unsigned int newSize) { _array.resize(newSize); }
237 if (_array.size()<=pos)
238 _array.resize(pos+1,0);
246 if (_array.size()<=pos)
247 _array.resize(pos+1,0);
264 typedef std::vector< osg::ref_ptr<VertexArrayState> >
Array;
#define GL_ARRAY_BUFFER_ARB
Definition BufferObject:30
#define GL_ELEMENT_ARRAY_BUFFER_ARB
Definition BufferObject:31
Definition BufferObject:164
void bindBuffer()
Definition BufferObject:771
bool isDirty() const
Definition BufferObject:222
Definition VertexArrayState:219
void resize(unsigned int newSize)
Definition VertexArrayState:232
bool empty() const
Definition VertexArrayState:228
void assignVertexArrayDispatcher()
void assignColorArrayDispatcher()
Array _array
Definition VertexArrayState:265
void assignFogCoordArrayDispatcher()
void clear()
Definition VertexArrayState:226
void assignNormalArrayDispatcher()
unsigned int size() const
Definition VertexArrayState:230
void assignTexCoordArrayDispatcher(unsigned int numUnits)
void assignVertexAttribArrayDispatcher(unsigned int numUnits)
void assignSecondaryColorArrayDispatcher()
void assignAllDispatchers()
std::vector< osg::ref_ptr< VertexArrayState > > Array
Definition VertexArrayState:264
Definition VertexArrayState:25
void setArray(ArrayDispatch *vad, osg::State &state, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized)
osg::ref_ptr< ArrayDispatch > _secondaryColorArray
Definition VertexArrayState:201
void deleteVertexArrayObject()
void lazyDisablingOfVertexAttributes()
Definition VertexArrayState:270
void setInterleavedArrays(osg::State &state, GLenum format, GLsizei stride, const GLvoid *pointer)
void setVertexArray(osg::State &state, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE)
Definition VertexArrayState:136
GLBufferObject * _currentEBO
Definition VertexArrayState:211
void generateVertexArrayObject()
void assignColorArrayDispatcher()
GLuint _vertexArrayObject
Definition VertexArrayState:195
void setNormalArray(osg::State &state, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE)
Definition VertexArrayState:140
void assignVertexAttribArrayDispatcher(unsigned int numUnits)
osg::ref_ptr< ObserverSet > _stateObserverSet
Definition VertexArrayState:190
void bindElementBufferObject(osg::GLBufferObject *ebo)
Definition VertexArrayState:90
void disableVertexAttribArray(osg::State &state, unsigned int unit)
Definition VertexArrayState:159
bool _isVertexBufferObjectSupported
Definition VertexArrayState:193
void disableNormalArray(osg::State &state)
Definition VertexArrayState:141
void applyDisablingOfVertexAttributes(osg::State &state)
Definition VertexArrayState:285
ActiveDispatchers _activeDispatchers
Definition VertexArrayState:207
osg::ref_ptr< ArrayDispatch > _colorArray
Definition VertexArrayState:200
void bindVertexBufferObject(osg::GLBufferObject *vbo)
Definition VertexArrayState:65
void setVertexArray(osg::State &state, const osg::Array *array)
Definition VertexArrayState:135
void disable(ArrayDispatch *vad, osg::State &state)
Definition VertexArrayState:131
void assignSecondaryColorArrayDispatcher()
GLBufferObject * _currentVBO
Definition VertexArrayState:210
osg::ref_ptr< osg::GLExtensions > _ext
Definition VertexArrayState:191
GLBufferObject * getCurrentElementBufferObject()
Definition VertexArrayState:88
void assignTexCoordArrayDispatcher(unsigned int numUnits)
void disableTexCoordArrayAboveAndIncluding(osg::State &state, unsigned int index)
Definition VertexArrayState:302
std::vector< ArrayDispatch * > ActiveDispatchers
Definition VertexArrayState:206
bool getRequiresSetArrays() const
Definition VertexArrayState:177
GLuint getVertexArrayObject() const
Definition VertexArrayState:173
void setArray(ArrayDispatch *vad, osg::State &state, const osg::Array *new_array)
void assignNormalArrayDispatcher()
void disableColorArray(osg::State &state)
Definition VertexArrayState:145
GLBufferObject * getCurrentVertexBufferObject()
Definition VertexArrayState:63
void assignFogCoordArrayDispatcher()
void setVertexAttribArray(osg::State &state, unsigned int unit, const osg::Array *array)
Definition VertexArrayState:158
void resetBufferObjectPointers()
Definition VertexArrayState:111
void setTexCoordArray(osg::State &state, unsigned int unit, const osg::Array *array)
Definition VertexArrayState:153
void disableVertexAttribArrayAboveAndIncluding(osg::State &state, unsigned int index)
Definition VertexArrayState:310
bool _requiresSetArrays
Definition VertexArrayState:213
void unbindElementBufferObject()
Definition VertexArrayState:104
void setTexCoordArray(osg::State &state, unsigned int unit, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE)
Definition VertexArrayState:154
void assignVertexArrayDispatcher()
void unbindVertexBufferObject()
Definition VertexArrayState:79
void assignAllDispatchers()
ArrayDispatchList _texCoordArrays
Definition VertexArrayState:203
osg::State * _state
Definition VertexArrayState:189
void disableFogCoordArray(osg::State &state)
Definition VertexArrayState:151
osg::ref_ptr< ArrayDispatch > _vertexArray
Definition VertexArrayState:198
void setSecondaryColorArray(osg::State &state, const osg::Array *array)
Definition VertexArrayState:147
void setFogCoordArray(osg::State &state, const osg::Array *array)
Definition VertexArrayState:150
void setNormalArray(osg::State &state, const osg::Array *array)
Definition VertexArrayState:139
void setCurrentVertexBufferObject(osg::GLBufferObject *vbo)
Definition VertexArrayState:62
bool isVertexBufferObjectSupported() const
Definition VertexArrayState:126
virtual ~VertexArrayState()
osg::ref_ptr< ArrayDispatch > _fogCoordArray
Definition VertexArrayState:202
void disableTexCoordArray(osg::State &state, unsigned int unit)
Definition VertexArrayState:155
void setVertexBufferObjectSupported(bool flag)
Definition VertexArrayState:125
std::vector< ref_ptr< ArrayDispatch > > ArrayDispatchList
Definition VertexArrayState:60
void setColorArray(osg::State &state, const osg::Array *array)
Definition VertexArrayState:143
void setRequiresSetArrays(bool flag)
Definition VertexArrayState:176
void disableVertexArray(osg::State &state)
Definition VertexArrayState:137
osg::ref_ptr< ArrayDispatch > _normalArray
Definition VertexArrayState:199
void setCurrentElementBufferObject(osg::GLBufferObject *ebo)
Definition VertexArrayState:87
bool correctArrayDispatchAssigned(const ArrayDispatch *ad)
void setColorArray(osg::State &state, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_TRUE)
Definition VertexArrayState:144
VertexArrayState(osg::State *state)
ActiveDispatchers _previous_activeDispatchers
Definition VertexArrayState:208
ArrayDispatchList _vertexAttribArrays
Definition VertexArrayState:204
void disableSecondaryColorArray(osg::State &state)
Definition VertexArrayState:148
author: Julien Valentin 2017 (mp3butcher@hotmail.com)
Definition AlphaFunc:19
T * get(unsigned int contextID)
Definition ContextData:152
#define OSG_EXPORT
Definition osg/Export:39
Definition VertexArrayState:31
virtual void enable_and_dispatch(osg::State &, const osg::Array *, const osg::GLBufferObject *)
Definition VertexArrayState:43
virtual void dispatch(osg::State &, const osg::Array *)
Definition VertexArrayState:47
virtual const char * className() const =0
virtual void dispatch(osg::State &, GLint, GLenum, GLsizei, const GLvoid *, GLboolean)
Definition VertexArrayState:51
virtual void enable_and_dispatch(osg::State &, GLint, GLenum, GLsizei, const GLvoid *, GLboolean)
Definition VertexArrayState:45
virtual bool isVertexAttribDispatch() const
Definition VertexArrayState:37
ArrayDispatch()
Definition VertexArrayState:32
virtual void disable(osg::State &)
Definition VertexArrayState:53
bool active
Definition VertexArrayState:57
virtual void enable_and_dispatch(osg::State &, const osg::Array *)
Definition VertexArrayState:41
const osg::Array * array
Definition VertexArrayState:55
virtual void dispatch(osg::State &, const osg::Array *, const osg::GLBufferObject *)
Definition VertexArrayState:49
unsigned int modifiedCount
Definition VertexArrayState:56