42#define GL_TEXTURE0 0x84C0
49#define OSG_GL_DEBUG(message) \
50 if (state.getFineGrainedErrorDetection()) \
52 GLenum errorNo = glGetError(); \
53 if (errorNo!=GL_NO_ERROR) \
55 osg::notify(WARN)<<"Warning: detected OpenGL error '"<<gluErrorString(errorNo)<<" "<<message<<endl; \
111 inline void setContextID(
unsigned int contextID) { _contextID=contextID; }
118 typedef std::map<const std::type_info*, osg::ref_ptr<osg::Referenced> >
ExtensionMap;
126 const std::type_info* id(&
typeid(T));
130 ptr =
new T(_contextID);
132 return static_cast<T*
>(ptr.
get());
141 const std::type_info* id(&
typeid(T));
142 ExtensionMap::const_iterator itr = _extensionMap.find(
id);
143 if (itr==_extensionMap.end())
return 0;
144 else return itr->second.get();
151 const std::type_info* id(&
typeid(T));
152 _extensionMap[id] = ptr;
177 up.first =
const_cast<Uniform*
>(uniform);
338 return _modeMap[mode].global_default_value;
343 return _modeMap[mode].last_applied_value;
351 _previous_value = _state.getLastAppliedModeValue(mode);
352 _need_to_apply_value = (_previous_value!=value);
353 if (_need_to_apply_value) _state.applyMode(_mode, value);
357 if (_need_to_apply_value) _state.applyMode(_mode, _previous_value);
370 _previous_value = _state.getLastAppliedTextureModeValue(_unit, _mode);
371 _need_to_apply_value = (_previous_value!=value);
372 if (_need_to_apply_value) _state.applyTextureMode(_unit, _mode, value);
376 if (_need_to_apply_value) _state.applyTextureMode(_unit, _mode, _previous_value);
399 return applyMode(mode,enabled,ms);
404 ModeMap& modeMap = getOrCreateTextureModeMap(unit);
411 ModeMap& modeMap = getOrCreateTextureModeMap(unit);
418 ModeMap& modeMap = getOrCreateTextureModeMap(unit);
421 return applyModeOnTexUnit(unit,mode,enabled,ms);
426 ModeMap& modeMap = getOrCreateTextureModeMap(unit);
448 return applyAttribute(attribute,as);
453 AttributeMap& attributeMap = getOrCreateTextureAttributeMap(unit);
460 AttributeMap& attributeMap = getOrCreateTextureAttributeMap(unit);
468 AttributeMap& attributeMap = getOrCreateTextureAttributeMap(unit);
471 return applyAttributeOnTexUnit(unit,attribute,as);
556 if (_vas==vas) _vas = _globalVertexArrayState.get();
587 if (pbo == _currentPBO)
return;
596 unbindPixelBufferObject();
602 if (!_currentPBO)
return;
616 else if (ibo != _currentDIBO)
625 if (!_currentDIBO)
return;
635 inline void bindVertexArrayObject(GLuint vao) {
if (_currentVAO!=vao) { _glExtensions->glBindVertexArray(vao); _currentVAO = vao; } }
646 void drawQuads(GLint first, GLsizei count, GLsizei primCount=0);
650 if (primcount>=1 && _glDrawArraysInstanced!=0) _glDrawArraysInstanced(mode, first, count, primcount);
651 else glDrawArrays(mode, first, count);
656 if (primcount>=1 && _glDrawElementsInstanced!=0) _glDrawElementsInstanced(mode, count, type, indices, primcount);
657 else glDrawElements(mode, count, type, indices);
661 inline void Vertex(
float x,
float y,
float z,
float w=1.0f)
663 #if defined(OSG_GL_VERTEX_FUNCS_AVAILABLE) && !defined(OSG_GLES1_AVAILABLE)
664 if (_useVertexAttributeAliasing) _glVertexAttrib4f( _vertexAlias._location, x,y,z,w);
665 else glVertex4f(x,y,z,w);
667 _glVertexAttrib4f( _vertexAlias._location, x,y,z,w);
671 inline void Color(
float r,
float g,
float b,
float a=1.0f)
673 #ifdef OSG_GL_VERTEX_FUNCS_AVAILABLE
674 if (_useVertexAttributeAliasing) _glVertexAttrib4f( _colorAlias._location, r,g,b,a);
675 else glColor4f(r,g,b,a);
677 _glVertexAttrib4f( _colorAlias._location, r,g,b,a);
683 #ifdef OSG_GL_VERTEX_FUNCS_AVAILABLE
684 if (_useVertexAttributeAliasing) _glVertexAttrib4f( _normalAlias._location, x,y,z,0.0);
685 else glNormal3f(x,y,z);
687 _glVertexAttrib4f( _normalAlias._location, x,y,z,0.0);
691 void TexCoord(
float x,
float y=0.0f,
float z=0.0f,
float w=1.0f)
693 #if !defined(OSG_GLES1_AVAILABLE)
694 #ifdef OSG_GL_VERTEX_FUNCS_AVAILABLE
695 if (_useVertexAttributeAliasing) _glVertexAttrib4f( _texCoordAliasList[0]._location, x,y,z,w);
696 else glTexCoord4f(x,y,z,w);
698 _glVertexAttrib4f( _texCoordAliasList[0]._location, x,y,z,w);
703 void MultiTexCoord(
unsigned int unit,
float x,
float y=0.0f,
float z=0.0f,
float w=1.0f)
705 #if !defined(OSG_GLES1_AVAILABLE)
706 #ifdef OSG_GL_VERTEX_FUNCS_AVAILABLE
707 if (_useVertexAttributeAliasing) _glVertexAttrib4f( _texCoordAliasList[unit]._location, x,y,z,w);
710 _glVertexAttrib4f( _texCoordAliasList[unit]._location, x,y,z,w);
715 void VerteAttrib(
unsigned int location,
float x,
float y=0.0f,
float z=0.0f,
float w=0.0f)
717 _glVertexAttrib4f( location, x,y,z,w);
724 void setInterleavedArrays( GLenum format, GLsizei stride,
const GLvoid* pointer) { _vas->setInterleavedArrays( *
this, format, stride, pointer); }
728 inline void setVertexPointer(GLint size, GLenum type, GLsizei stride,
const GLvoid *ptr, GLboolean normalized=GL_FALSE) { _vas->setVertexArray( *
this, size, type, stride, ptr, normalized); }
733 inline void setNormalPointer( GLenum type, GLsizei stride,
const GLvoid *ptr, GLboolean normalized=GL_FALSE ) { _vas->setNormalArray( *
this, type, stride, ptr, normalized); }
737 inline void setColorPointer( GLint size, GLenum type, GLsizei stride,
const GLvoid *ptr, GLboolean normalized=GL_TRUE ) { _vas->setColorArray(*
this, size, type, stride, ptr, normalized); }
750 inline void setTexCoordPointer(
unsigned int unit, GLint size, GLenum type, GLsizei stride,
const GLvoid *ptr, GLboolean normalized=GL_FALSE ) { _vas->setTexCoordArray(*
this, unit, size, type, stride, ptr, normalized); }
764 inline bool setActiveTextureUnit(
unsigned int unit );
790 inline bool useVertexBufferObject(
bool useVBO)
const {
return _forceVertexBufferObject || (_isVertexBufferObjectSupported && useVBO); }
793 inline bool useVertexArrayObject(
bool useVAO)
const {
return _forceVertexArrayObject || (_isVertexArrayObjectSupported && useVAO); }
798 if (_lastAppliedProgramObject!=program)
800 _lastAppliedProgramObject = program;
805 inline GLint
getUniformLocation(
unsigned int uniformNameID )
const {
return _lastAppliedProgramObject ? _lastAppliedProgramObject->getUniformLocation(uniformNameID) : -1; }
814 inline GLint
getUniformLocation(
const std::string & uniformName )
const {
return _lastAppliedProgramObject ? _lastAppliedProgramObject->getUniformLocation(uniformName) : -1; }
815 inline GLint
getAttribLocation(
const std::string& name )
const {
return _lastAppliedProgramObject ? _lastAppliedProgramObject->getAttribLocation(name) : -1; }
817 typedef std::pair<const StateAttribute*,StateAttribute::OverrideValue>
AttributePair;
873 if (_dynamicObjectCount != count)
875 _dynamicObjectCount = count;
876 if (_dynamicObjectCount==0 && callCallbackOnZero && _completeDynamicObjectRenderingCallback.valid())
878 _completeDynamicObjectRenderingCallback->completed(
this);
890 --_dynamicObjectCount;
891 if (_dynamicObjectCount==0 && _completeDynamicObjectRenderingCallback.valid())
893 _completeDynamicObjectRenderingCallback->completed(
this);
930 void print(std::ostream& fout)
const;
967 _gpuTimestamp = timestamp;
978 typedef std::vector<StateAttribute::GLModeValue>
ValueVec;
984 last_applied_value =
false;
985 global_default_value =
false;
988 void print(std::ostream& fout)
const;
1002 last_applied_attribute = 0L;
1003 last_applied_shadercomponent = 0L;
1004 global_default_attribute = 0L;
1021 typedef std::pair<const Uniform*,StateAttribute::OverrideValue>
UniformPair;
1058 typedef std::map<StateAttribute::GLMode,ModeStack>
ModeMap;
1061 typedef std::map<StateAttribute::TypeMemberPair,AttributeStack>
AttributeMap;
1149 if (enabled) glEnable(mode);
1150 else glDisable(mode);
1152 if (_checkGLErrors==ONCE_PER_ATTRIBUTE) checkGLErrors(mode);
1164 if (setActiveTextureUnit(unit))
1168 if (enabled) glEnable(mode);
1169 else glDisable(mode);
1171 if (_checkGLErrors==ONCE_PER_ATTRIBUTE) checkGLErrors(mode);
1190 attribute->
apply(*
this);
1196 _shaderCompositionDirty =
true;
1199 if (_checkGLErrors==ONCE_PER_ATTRIBUTE) checkGLErrors(attribute);
1211 if (setActiveTextureUnit(unit))
1216 attribute->
apply(*
this);
1222 _shaderCompositionDirty =
true;
1225 if (_checkGLErrors==ONCE_PER_ATTRIBUTE) checkGLErrors(attribute);
1249 _shaderCompositionDirty =
true;
1264 if (setActiveTextureUnit(unit))
1274 _shaderCompositionDirty =
true;
1312 if (unit>=_textureModeMapList.size()) _textureModeMapList.resize(unit+1);
1313 return _textureModeMapList[unit];
1319 if (unit>=_textureAttributeMapList.size()) _textureAttributeMapList.resize(unit+1);
1320 return _textureAttributeMapList[unit];
1338 inline void applyModeMap(ModeMap& modeMap);
1339 inline void applyAttributeMap(AttributeMap& attributeMap);
1340 inline void applyUniformMap(UniformMap& uniformMap);
1342 inline void applyModeListOnTexUnit(
unsigned int unit,ModeMap& modeMap,
const StateSet::ModeList& modeList);
1343 inline void applyAttributeListOnTexUnit(
unsigned int unit,AttributeMap& attributeMap,
const StateSet::AttributeList& attributeList);
1345 inline void applyModeMapOnTexUnit(
unsigned int unit,ModeMap& modeMap);
1346 inline void applyAttributeMapOnTexUnit(
unsigned int unit,AttributeMap& attributeMap);
1365 typedef void (GL_APIENTRY * ActiveTextureProc) (GLenum texture);
1366 typedef void (GL_APIENTRY * FogCoordPointerProc) (GLenum type, GLsizei stride,
const GLvoid *pointer);
1367 typedef void (GL_APIENTRY * SecondaryColorPointerProc) (GLint size, GLenum type, GLsizei stride,
const GLvoid *pointer);
1368 typedef void (GL_APIENTRY * MultiTexCoord4fProc) (GLenum target, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
1369 typedef void (GL_APIENTRY * VertexAttrib4fProc)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
1370 typedef void (GL_APIENTRY * VertexAttrib4fvProc)(GLuint index,
const GLfloat *v);
1371 typedef void (GL_APIENTRY * VertexAttribPointerProc) (
unsigned int, GLint, GLenum, GLboolean normalized, GLsizei stride,
const GLvoid *pointer);
1372 typedef void (GL_APIENTRY * VertexAttribIPointerProc) (
unsigned int, GLint, GLenum, GLsizei stride,
const GLvoid *pointer);
1373 typedef void (GL_APIENTRY * VertexAttribLPointerProc) (
unsigned int, GLint, GLenum, GLsizei stride,
const GLvoid *pointer);
1374 typedef void (GL_APIENTRY * EnableVertexAttribProc) (
unsigned int);
1375 typedef void (GL_APIENTRY * DisableVertexAttribProc) (
unsigned int);
1376 typedef void (GL_APIENTRY * BindBufferProc) (GLenum target, GLuint buffer);
1378 typedef void (GL_APIENTRY * DrawArraysInstancedProc)( GLenum mode, GLint first, GLsizei count, GLsizei primcount );
1379 typedef void (GL_APIENTRY * DrawElementsInstancedProc)( GLenum mode, GLsizei count, GLenum type,
const GLvoid *indices, GLsizei primcount );
1417 for(StateSet::ModeList::const_iterator
mitr=
modeList.begin();
1423 if (
ms.valueVec.empty())
1431 ms.valueVec.push_back(
ms.valueVec.back());
1436 ms.valueVec.push_back(
mitr->second);
1450 if (
as.attributeVec.empty())
1459 as.attributeVec.push_back(
as.attributeVec.back());
1464 as.attributeVec.push_back(
1502 for(StateSet::DefineList::const_iterator
aitr=
defineList.begin();
1520 ds.defineVec.push_back(
ds.defineVec.back());
1528 bool changed = (
dv[
dv.size()-2] !=
dv.back());
1540 for(StateSet::ModeList::const_iterator
mitr=
modeList.begin();
1546 if (!
ms.valueVec.empty())
1562 if (!
as.attributeVec.empty())
1587 for(StateSet::DefineList::const_iterator
aitr=
defineList.begin();
1597 if ((
dv.size() < 2) || (
dv[
dv.size()-2] !=
dv.back()))
1622 if (!
ms.valueVec.empty())
1699 if (!
ms.valueVec.empty())
1744 if (!
ms.valueVec.empty())
1821 if (!
ms.valueVec.empty())
1867 if (!
as.attributeVec.empty())
1939 if (!
as.attributeVec.empty())
1985 if (!
as.attributeVec.empty())
2057 if (!
as.attributeVec.empty())
2101 if (!
as.uniformVec.empty())
2145 if (!
as.uniformVec.empty())
2240 if (!
ms.valueVec.empty())
2266 if (!
ms.valueVec.empty())
2291 if (!
as.attributeVec.empty())
2315 if (!
as.attributeVec.empty())
2338 if (!
as.uniformVec.empty())
#define GL_PIXEL_UNPACK_BUFFER_ARB
Definition BufferObject:85
#define GL_DRAW_INDIRECT_BUFFER
Definition GLDefines:438
#define GL_TEXTURE0
Definition State:42
Definition AttributeDispatchers:35
Definition DisplaySettings:34
static ref_ptr< DisplaySettings > & instance()
Definition BufferObject:164
void bindBuffer()
Definition BufferObject:771
bool isDirty() const
Definition BufferObject:222
Definition GLExtensions:169
Definition GraphicsContext:30
Definition GraphicsCostEstimator:108
virtual StateAttribute * asStateAttribute()
Definition Object:127
const std::string & getName() const
Definition Object:213
Definition osg/Program:264
void apply(const Uniform &uniform) const
Definition osg/Program:302
Definition osg/Program:52
std::map< std::string, GLuint > AttribBindingList
Definition osg/Program:217
deprecated
Definition ShaderComposer:30
Definition StateAttribute:77
GLenum GLMode
Definition StateAttribute:81
@ OVERRIDE
Definition StateAttribute:105
@ PROTECTED
Definition StateAttribute:107
@ ON
Definition StateAttribute:103
ShaderComponent * getShaderComponent()
Definition StateAttribute:304
TypeMemberPair getTypeMemberPair() const
Definition StateAttribute:270
unsigned int GLModeValue
Definition StateAttribute:85
virtual void apply(State &) const
Definition StateAttribute:358
Type
Definition StateAttribute:124
@ VIEWPORT
Definition StateAttribute:155
std::pair< Type, unsigned int > TypeMemberPair
Definition StateAttribute:218
virtual Object * cloneType() const =0
unsigned int OverrideValue
Definition StateAttribute:89
std::pair< ref_ptr< Uniform >, StateAttribute::OverrideValue > RefUniformPair
Definition StateSet:302
std::map< std::string, RefUniformPair > UniformList
Definition StateSet:305
std::map< StateAttribute::TypeMemberPair, RefAttributePair > AttributeList
Definition StateSet:166
std::pair< std::string, StateAttribute::OverrideValue > DefinePair
Definition StateSet:345
std::map< StateAttribute::GLMode, StateAttribute::GLModeValue > ModeList
Definition StateSet:119
std::map< std::string, DefinePair > DefineList
Definition StateSet:346
unsigned int getContextID() const
Definition State:114
GLBufferObject * _currentDIBO
Definition State:1306
unsigned int getMaxBufferObjectPoolSize() const
Definition State:901
const TextureModeMapList & getTextureModeMapList() const
Definition State:1074
virtual void frameCompleted()
DefineMap & getDefineMap()
Definition State:1072
bool getLastAppliedMode(StateAttribute::GLMode mode) const
void applyAttributeMap(AttributeMap &attributeMap)
Definition State:2281
void setCheckForGLErrors(CheckForGLErrors check)
Definition State:920
FrameStamp * getFrameStamp()
Definition State:830
void setContextID(unsigned int contextID)
Definition State:111
bool checkGLErrors(const StateAttribute *attribute) const
GraphicsContext * getGraphicsContext()
Definition State:90
void VerteAttrib(unsigned int location, float x, float y=0.0f, float z=0.0f, float w=0.0f)
Definition State:715
AttributeMap _attributeMap
Definition State:1288
void setVertexPointer(const Array *array)
Definition State:727
AttributeDispatchers & getAttributeDispatchers()
Definition State:936
DrawElementsInstancedProc _glDrawElementsInstanced
Definition State:1398
void setGraphicsCostEstimator(GraphicsCostEstimator *gce)
Definition State:940
void setCurrentPixelBufferObject(osg::GLBufferObject *pbo)
Definition State:580
void applyModeList(ModeMap &modeMap, const StateSet::ModeList &modeList)
Definition State:1607
bool _useModelViewAndProjectionUniforms
Definition State:1108
bool applyAttributeOnTexUnit(unsigned int unit, const StateAttribute *attribute, AttributeStack &as)
Definition State:1207
Matrix _initialInverseViewMatrix
Definition State:1114
void pushDefineList(DefineMap &defineMap, const StateSet::DefineList &defineList)
Definition State:1500
void setColorAlias(const VertexAttribAlias &alias)
Definition State:272
void popDefineList(DefineMap &uniformMap, const StateSet::DefineList &defineList)
Definition State:1585
bool _isVertexBufferObjectSupported
Definition State:1360
BindBufferProc _glBindBuffer
Definition State:1396
const osg::Matrix & getProjectionMatrix() const
Definition State:232
bool useVertexBufferObject(bool useVBO) const
Definition State:790
std::vector< ref_ptr< const Matrix > > MatrixStack
Definition State:1067
VertexAttribPointerProc _glVertexAttribPointer
Definition State:1391
void applyShaderCompositionUniform(const osg::Uniform *uniform, StateAttribute::OverrideValue value=StateAttribute::ON)
Definition State:174
void unbindDrawIndirectBufferObject()
Definition State:623
void applyModelViewAndProjectionUniformsIfRequired()
bool applyMode(StateAttribute::GLMode mode, bool enabled, ModeStack &ms)
Definition State:1143
const StateAttribute * getLastAppliedTextureAttribute(unsigned int unit, StateAttribute::Type type, unsigned int member=0) const
void disableFogCoordPointer()
Definition State:746
std::string getDefineString(const osg::ShaderDefines &shaderDefines)
void setGlobalDefaultAttribute(const StateAttribute *attribute)
Definition State:431
void applyUniformMap(UniformMap &uniformMap)
Definition State:2329
void resetCurrentVertexArrayStateOnMatch(VertexArrayState *vas)
Definition State:553
void setNormalPointer(GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE)
Definition State:733
T * get()
Definition State:124
VertexAttribAlias _colorAlias
Definition State:1125
void popModeList(ModeMap &modeMap, const StateSet::ModeList &modeList)
Definition State:1538
void decrementDynamicObjectCount()
Definition State:888
bool _shaderCompositionDirty
Definition State:1092
ShaderComposer * getShaderComposer()
Definition State:165
bool getUseVertexAttributeAliasing() const
Definition State:256
void setLastAppliedProgramObject(const Program::PerContextProgram *program)
Definition State:796
bool getGlobalDefaultTextureModeValue(unsigned int unit, StateAttribute::GLMode mode)
Definition State:409
const VertexAttribAlias & getNormalAlias()
Definition State:269
void glReadBuffer(GLenum buffer)
void haveAppliedTextureMode(unsigned int unit, StateAttribute::GLMode mode, StateAttribute::GLModeValue value)
void haveAppliedMode(StateAttribute::GLMode mode)
void setTexCoordPointer(unsigned int unit, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE)
Definition State:750
void setCurrentToGlobalVertexArrayState()
Definition State:550
GLenum getDrawBuffer() const
Definition State:308
void setMaxTexturePoolSize(unsigned int size)
void setVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_FALSE)
Definition State:728
int _timestampBits
Definition State:1412
ActiveTextureProc _glActiveTexture
Definition State:1385
AttributeMap & getOrCreateTextureAttributeMap(unsigned int unit)
Definition State:1317
void setVertexAttribLPointer(unsigned int unit, const Array *array)
Definition State:778
void setCurrentVertexArrayObject(GLuint vao)
Definition State:630
ref_ptr< const RefMatrix > _projection
Definition State:1104
const GraphicsContext * getGraphicsContext() const
Definition State:93
int getTimestampBits() const
Definition State:969
DisplaySettings * getActiveDisplaySettings()
Definition State:845
bool getModeValidity(StateAttribute::GLMode mode)
Definition State:324
void applyUniformList(UniformMap &uniformMap, const StateSet::UniformList &uniformList)
Definition State:2087
void applyModelViewMatrix(const osg::Matrix &)
const StateAttribute * getLastAppliedAttribute(StateAttribute::Type type, unsigned int member=0) const
void setGlobalDefaultTextureAttribute(unsigned int unit, const StateAttribute *attribute)
Definition State:451
const GLBufferObject * getCurrentVertexBufferObject()
Definition State:568
void haveAppliedAttribute(AttributeMap &attributeMap, const StateAttribute *attribute)
bool getGlobalDefaultModeValue(StateAttribute::GLMode mode)
Definition State:336
VertexAttrib4fvProc _glVertexAttrib4fv
Definition State:1388
CheckForGLErrors getCheckForGLErrors() const
Definition State:923
const TextureAttributeMapList & getTextureAttributeMapList() const
Definition State:1075
void applyModelViewMatrix(const osg::RefMatrix *matrix)
osg::ref_ptr< GLExtensions > _glExtensions
Definition State:1400
void insertStateSet(unsigned int pos, const StateSet *dstate)
bool getAbortRendering() const
Definition State:856
bool getLastAppliedTextureModeValue(unsigned int unit, StateAttribute::GLMode mode)
Definition State:424
unsigned int getActiveTextureUnit() const
Definition State:767
const Program::PerContextProgram * getLastAppliedProgramObject() const
Definition State:803
DefineMap _defineMap
Definition State:1290
ref_ptr< const RefMatrix > _identity
Definition State:1102
void bindVertexArrayObject(GLuint vao)
Definition State:635
bool _isVertexArrayObjectSupported
Definition State:1361
void setColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr, GLboolean normalized=GL_TRUE)
Definition State:737
const osg::Matrix & getModelViewMatrix() const
Definition State:237
void setUpVertexAttribAlias(VertexAttribAlias &alias, GLuint location, const std::string glName, const std::string osgName, const std::string &declaration)
void setGlobalDefaultTextureModeValue(unsigned int unit, StateAttribute::GLMode mode, bool enabled)
Definition State:402
bool _useVertexAttributeAliasing
Definition State:1122
void haveAppliedTextureAttribute(unsigned int unit, const StateAttribute *attribute)
void applyAttributeListOnTexUnit(unsigned int unit, AttributeMap &attributeMap, const StateSet::AttributeList &attributeList)
Definition State:1969
void Normal(float x, float y, float z)
Definition State:681
std::vector< ModeMap > TextureModeMapList
Definition State:1059
bool * _abortRenderingPtr
Definition State:1118
Polytope getViewFrustum() const
std::vector< VertexAttribAlias > VertexAttribAliasList
Definition State:258
bool checkGLErrors(StateAttribute::GLMode mode) const
void lazyDisablingOfVertexAttributes()
Definition State:564
bool setClientActiveTextureUnit(unsigned int unit)
void setAbortRenderingPtr(bool *abortPtr)
Definition State:852
AttributeVec & getAttributeVec(const osg::StateAttribute *attribute)
Definition State:820
void applyShaderComposition()
osg::ref_ptr< ShaderComposer > _shaderComposer
Definition State:1093
void disableVertexAttribPointer(unsigned int index)
Definition State:781
bool getLastAppliedMode(const ModeMap &modeMap, StateAttribute::GLMode mode) const
VertexAttribAlias _secondaryColorAlias
Definition State:1126
bool _shaderCompositionEnabled
Definition State:1091
ref_ptr< RefMatrix > _modelViewCache
Definition State:1106
GLint getAttribLocation(const std::string &name) const
Definition State:815
void popAttributeList(AttributeMap &attributeMap, const StateSet::AttributeList &attributeList)
Definition State:1554
void setTimestampBits(int bits)
Definition State:970
osg::Uniform * getModelViewMatrixUniform()
Definition State:246
const StateAttribute * getGlobalDefaultTextureAttribute(unsigned int unit, StateAttribute::Type type, unsigned int member=0)
Definition State:458
bool supportsShaderRequirement(const std::string &shaderRequirement)
void TexCoord(float x, float y=0.0f, float z=0.0f, float w=1.0f)
Definition State:691
void setVertexAttribIPointer(unsigned int unit, const Array *array)
Definition State:779
void bindPixelBufferObject(osg::GLBufferObject *pbo)
Definition State:583
osg::Uniform * getNormalMatrixUniform()
Definition State:249
void haveAppliedAttribute(AttributeMap &attributeMap, StateAttribute::Type type, unsigned int member)
Program::AttribBindingList _attributeBindingList
Definition State:1130
std::pair< const StateAttribute *, StateAttribute::OverrideValue > AttributePair
Definition State:817
void applyAttributeMapOnTexUnit(unsigned int unit, AttributeMap &attributeMap)
Definition State:2305
void popStateSetStackToSize(unsigned int size)
Definition State:202
StateSetStack _stateStateStack
Definition State:1297
GLint _glMaxTextureUnits
Definition State:1383
void removeStateSet(unsigned int pos)
void dirtyAllVertexArrays()
GLBufferObject * _currentPBO
Definition State:1305
ref_ptr< Uniform > _modelViewProjectionMatrixUniform
Definition State:1111
Timer_t _gpuTick
Definition State:1410
bool applyGlobalDefaultAttributeOnTexUnit(unsigned int unit, AttributeStack &as)
Definition State:1260
StateSet::UniformList & getCurrentShaderCompositionUniformList()
Definition State:171
VertexAttribAlias _fogCoordAlias
Definition State:1127
EnableVertexAttribProc _glEnableVertexAttribArray
Definition State:1394
ref_ptr< const RefMatrix > _modelView
Definition State:1105
GLint getMaxTextureUnits() const
For GL>=2.0 uses GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, for GL<2 uses GL_MAX_TEXTURE_UNITS.
Definition State:758
ModeMap & getOrCreateTextureModeMap(unsigned int unit)
Definition State:1310
void setVertexAlias(const VertexAttribAlias &alias)
Definition State:264
void unbindVertexBufferObject()
Definition State:571
void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
Definition State:648
TextureAttributeMapList _textureAttributeMapList
Definition State:1293
void setTexCoordPointer(unsigned int unit, const Array *array)
Definition State:749
const GLBufferObject * getCurrentElementBufferObject()
Definition State:574
void setCurrentVertexArrayState(VertexArrayState *vas)
Definition State:544
Timer_t getGpuTick() const
Definition State:956
void popUniformList(UniformMap &uniformMap, const StateSet::UniformList &uniformList)
Definition State:1570
const osg::Matrix & getInitialInverseViewMatrix() const
Definition State:228
void unbindElementBufferObject()
Definition State:577
void haveAppliedAttribute(StateAttribute::Type type, unsigned int member=0)
bool supportsShaderRequirements(const osg::ShaderDefines &shaderRequirements)
void haveAppliedMode(ModeMap &modeMap, StateAttribute::GLMode mode, StateAttribute::GLModeValue value)
void applyModeMap(ModeMap &modeMap)
Definition State:2229
FogCoordPointerProc _glFogCoordPointer
Definition State:1389
std::vector< GLushort > IndicesGLushort
Definition State:640
ActiveTextureProc _glClientActiveTexture
Definition State:1384
void unbindPixelBufferObject()
Definition State:600
void loadModelViewMatrix()
void disableVertexAttribPointersAboveAndIncluding(unsigned int index)
Definition State:782
void updateModelViewAndProjectionMatrixUniforms()
void setAttributeBindingList(const Program::AttribBindingList &attribBindingList)
Definition State:288
GLenum getReadBuffer() const
Definition State:311
void pushUniformList(UniformMap &uniformMap, const StateSet::UniformList &uniformList)
Definition State:1472
Timer_t getStartTick() const
Definition State:954
void setGraphicsContext(GraphicsContext *context)
Definition State:87
ref_ptr< Uniform > _projectionMatrixUniform
Definition State:1110
const Program::PerContextProgram * _lastAppliedProgramObject
Definition State:1295
VertexAttribAlias _vertexAlias
Definition State:1123
void bindVertexBufferObject(osg::GLBufferObject *vbo)
Definition State:570
const StateAttribute * getLastAppliedAttribute(const AttributeMap &attributeMap, StateAttribute::Type type, unsigned int member) const
GLuint64 getGpuTimestamp() const
Definition State:962
void haveAppliedAttribute(const StateAttribute *attribute)
bool getUseModelViewAndProjectionUniforms() const
Definition State:240
void MultiTexCoord(unsigned int unit, float x, float y=0.0f, float z=0.0f, float w=1.0f)
Definition State:703
ref_ptr< FrameStamp > _frameStamp
Definition State:1097
std::vector< GLuint > IndicesGLuint
Definition State:643
void setColorPointer(const Array *array)
Definition State:736
bool applyAttribute(const StateAttribute *attribute, AttributeStack &as)
Definition State:1183
const DisplaySettings * getDisplaySettings() const
Definition State:842
VertexAttribAliasList _texCoordAliasList
Definition State:1128
void applyModeMapOnTexUnit(unsigned int unit, ModeMap &modeMap)
Definition State:2255
void pushAttributeList(AttributeMap &attributeMap, const StateSet::AttributeList &attributeList)
Definition State:1442
bool isVertexBufferObjectSupported() const
Definition State:789
void disableAllVertexArrays()
GLenum _readBuffer
Definition State:1100
void setShaderCompositionEnabled(bool flag)
Definition State:156
GLint getUniformLocation(unsigned int uniformNameID) const
Definition State:805
void setFrameStamp(FrameStamp *fs)
Definition State:827
std::map< StateAttribute::TypeMemberPair, AttributeStack > AttributeMap
Definition State:1061
unsigned int getMaxTexturePoolSize() const
Definition State:898
const Program::AttribBindingList & getAttributeBindingList()
Definition State:289
void haveAppliedMode(ModeMap &modeMap, StateAttribute::GLMode mode)
void captureCurrentState(StateSet &stateset) const
void setVertexAttribPointer(unsigned int unit, const Array *array)
Definition State:777
DisableVertexAttribProc _glDisableVertexAttribArray
Definition State:1395
ref_ptr< const RefMatrix > _initialViewMatrix
Definition State:1103
void dirtyAllAttributes()
const DisplaySettings * getActiveDisplaySettings() const
Definition State:848
GraphicsContext * _graphicsContext
Definition State:1085
VertexArrayState * getCurrentVertexArrayState() const
Definition State:547
GLint getUniformLocation(const std::string &uniformName) const
Definition State:814
Timer_t _startTick
Definition State:1409
void setTexCoordAliasList(const VertexAttribAliasList &aliasList)
Definition State:284
unsigned int _contextID
Definition State:1086
SecondaryColorPointerProc _glSecondaryColorPointer
Definition State:1390
void haveAppliedTextureMode(unsigned int unit, StateAttribute::GLMode mode)
GLint _glMaxTextureCoords
Definition State:1382
void disableSecondaryColorPointer()
Definition State:742
bool useVertexArrayObject(bool useVAO) const
Definition State:793
std::vector< const StateSet * > StateSetStack
Definition State:204
bool _isFogCoordSupported
Definition State:1359
std::map< StateAttribute::GLMode, ModeStack > ModeMap
Definition State:1058
ref_ptr< Uniform > _modelViewMatrixUniform
Definition State:1109
std::map< const std::type_info *, osg::ref_ptr< osg::Referenced > > ExtensionMap
Definition State:118
void setInitialViewMatrix(const osg::RefMatrix *matrix)
void print(std::ostream &fout) const
unsigned int getStateSetStackSize()
Definition State:199
ref_ptr< DisplaySettings > _displaySettings
Definition State:1116
ModeMap _modeMap
Definition State:1287
void unbindVertexArrayObject()
Definition State:637
UniformMap _uniformMap
Definition State:1289
void apply(const StateSet *dstate)
unsigned int getClientActiveTextureUnit() const
const UniformMap & getUniformMap() const
Definition State:1071
void haveAppliedTextureAttribute(unsigned int unit, StateAttribute::Type type, unsigned int member=0)
const ShaderComposer * getShaderComposer() const
Definition State:168
void set(T *ptr)
Definition State:149
const GLBufferObject * getCurrentPixelBufferObject() const
Definition State:581
std::map< std::string, UniformStack > UniformMap
Definition State:1064
CheckForGLErrors
Definition State:905
@ NEVER_CHECK_GL_ERRORS
Definition State:908
@ ONCE_PER_FRAME
Definition State:912
const VertexAttribAliasList & getTexCoordAliasList()
Definition State:285
void pushStateSet(const StateSet *dstate)
void setNormalPointer(const Array *array)
Definition State:732
void setGlobalDefaultModeValue(StateAttribute::GLMode mode, bool enabled)
Definition State:330
void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount)
Definition State:654
const GraphicsCostEstimator * getGraphicsCostEstimator() const
Definition State:946
bool _forceVertexBufferObject
Definition State:1362
VertexAttrib4fProc _glVertexAttrib4f
Definition State:1387
void setStartTick(Timer_t tick)
Definition State:955
void applyModeListOnTexUnit(unsigned int unit, ModeMap &modeMap, const StateSet::ModeList &modeList)
Definition State:1729
DrawArraysInstancedProc _glDrawArraysInstanced
Definition State:1397
osg::ref_ptr< GraphicsCostEstimator > _graphicsCostEstimator
Definition State:1407
CheckForGLErrors _checkGLErrors
Definition State:1119
TextureModeMapList _textureModeMapList
Definition State:1292
const FrameStamp * getFrameStamp() const
Definition State:833
void setModeValidity(StateAttribute::GLMode mode, bool valid)
Definition State:316
osg::Uniform * getProjectionMatrixUniform()
Definition State:247
GLuint64 _gpuTimestamp
Definition State:1411
unsigned int _dynamicObjectCount
Definition State:1402
void setCurrentElementBufferObject(osg::GLBufferObject *ebo)
Definition State:573
osg::ref_ptr< VertexArrayState > _globalVertexArrayState
Definition State:1088
std::vector< AttributeMap > TextureAttributeMapList
Definition State:1062
const DefineMap & getDefineMap() const
Definition State:1073
GLenum _drawBuffer
Definition State:1099
void disableColorPointer()
Definition State:738
VertexArrayState * _vas
Definition State:1089
void setSecondaryColorAlias(const VertexAttribAlias &alias)
Definition State:276
bool _isSecondaryColorSupported
Definition State:1358
GLuint _currentVAO
Definition State:1307
AttributeDispatchers _arrayDispatchers
Definition State:1405
void setFogCoordPointer(const Array *array)
Definition State:745
bool applyGlobalDefaultAttribute(AttributeStack &as)
Definition State:1237
StateSetStack & getStateSetStack()
Definition State:207
void setDisplaySettings(DisplaySettings *vs)
Definition State:839
bool getShaderCompositionEnabled() const
Definition State:159
bool getLastAppliedModeValue(StateAttribute::GLMode mode)
Definition State:341
bool getLastAppliedTextureMode(unsigned int unit, StateAttribute::GLMode mode) const
void Color(float r, float g, float b, float a=1.0f)
Definition State:671
bool applyModeOnTexUnit(unsigned int unit, StateAttribute::GLMode mode, bool enabled, ModeStack &ms)
Definition State:1160
bool _extensionProcsInitialized
Definition State:1381
bool _forceVertexArrayObject
Definition State:1363
unsigned int _maxBufferObjectPoolSize
Definition State:1300
void setMaxBufferObjectPoolSize(unsigned int size)
void applyAttributeList(AttributeMap &attributeMap, const StateSet::AttributeList &attributeList)
Definition State:1851
void disableTexCoordPointersAboveAndIncluding(unsigned int unit)
Definition State:752
GraphicsCostEstimator * getGraphicsCostEstimator()
Definition State:943
ref_ptr< Uniform > _normalMatrixUniform
Definition State:1112
void bindDrawIndirectBufferObject(osg::GLBufferObject *ibo)
Definition State:609
const VertexAttribAlias & getVertexAlias()
Definition State:265
const VertexAttribAlias & getSecondaryColorAlias()
Definition State:277
GLuint getCurrentVertexArrayObject() const
Definition State:631
const T * get() const
Definition State:139
void haveAppliedMode(StateAttribute::GLMode mode, StateAttribute::GLModeValue value)
bool applyTextureAttribute(unsigned int unit, const StateAttribute *attribute)
Definition State:466
unsigned int _currentClientActiveTextureUnit
Definition State:1304
osg::Program * _currentShaderCompositionProgram
Definition State:1094
VertexAttribIPointerProc _glVertexAttribIPointer
Definition State:1392
void disableTexCoordPointer(unsigned int unit)
Definition State:751
void drawQuads(GLint first, GLsizei count, GLsizei primCount=0)
const Viewport * getCurrentViewport() const
Definition State:219
bool isFogCoordSupported() const
Definition State:744
void Vertex(float x, float y, float z, float w=1.0f)
Definition State:661
bool applyMode(StateAttribute::GLMode mode, bool enabled)
Definition State:395
bool isSecondaryColorSupported() const
Definition State:740
void setSecondaryColorPointer(const Array *array)
Definition State:741
const ModeMap & getModeMap() const
Definition State:1069
ExtensionMap _extensionMap
Definition State:119
unsigned int getDynamicObjectCount() const
Definition State:884
std::vector< AttributePair > AttributeVec
Definition State:818
VertexAttribAlias _normalAlias
Definition State:1124
void setFogCoordAlias(const VertexAttribAlias &alias)
Definition State:280
void setUseModelViewAndProjectionUniforms(bool flag)
Definition State:239
bool applyAttribute(const StateAttribute *attribute)
Definition State:444
const VertexAttribAlias & getFogCoordAlias()
Definition State:281
void disableVertexPointer()
Definition State:729
void applyProjectionMatrix(const osg::RefMatrix *matrix)
osg::ref_ptr< DynamicObjectRenderingCompletedCallback > _completeDynamicObjectRenderingCallback
Definition State:1403
DynamicObjectRenderingCompletedCallback * getDynamicObjectRenderingCompletedCallback()
Definition State:868
void disableNormalPointer()
Definition State:734
void applyDefineList(DefineMap &uniformMap, const StateSet::DefineList &defineList)
Definition State:2161
bool setActiveTextureUnit(unsigned int unit)
Definition State:2345
void pushModeList(ModeMap &modeMap, const StateSet::ModeList &modeList)
Definition State:1415
const StateAttribute * getGlobalDefaultAttribute(StateAttribute::Type type, unsigned int member=0)
Definition State:437
void setShaderComposer(ShaderComposer *sc)
Definition State:162
osg::Uniform * getModelViewProjectionMatrixUniform()
Definition State:248
void setGpuTimestamp(Timer_t tick, GLuint64 timestamp)
Definition State:964
void setCurrentVertexBufferObject(osg::GLBufferObject *vbo)
Definition State:567
bool isVertexArrayObjectSupported() const
Definition State:792
bool applyTextureMode(unsigned int unit, StateAttribute::GLMode mode, bool enabled)
Definition State:416
const osg::Matrix & getInitialViewMatrix() const
Definition State:227
unsigned int _currentActiveTextureUnit
Definition State:1303
VertexAttribLPointerProc _glVertexAttribLPointer
Definition State:1393
void setDynamicObjectRenderingCompletedCallback(DynamicObjectRenderingCompletedCallback *cb)
Definition State:865
const VertexAttribAlias & getColorAlias()
Definition State:273
double getGpuTime() const
Definition State:958
const AttributeMap & getAttributeMap() const
Definition State:1070
void initializeExtensionProcs()
MultiTexCoord4fProc _glMultiTexCoord4f
Definition State:1386
StateSet::UniformList _currentShaderCompositionUniformList
Definition State:1095
void bindVertexArrayObject(const VertexArrayState *vas)
Definition State:633
GLint getMaxTextureCoords() const
For GL>=2.0 uses GL_MAX_TEXTURE_COORDS, for GL<2 uses GL_MAX_TEXTURE_UNITS.
Definition State:755
void setDynamicObjectCount(unsigned int count, bool callCallbackOnZero=false)
Definition State:871
void applyDisablingOfVertexAttributes()
Definition State:565
unsigned int _maxTexturePoolSize
Definition State:1299
void setNormalAlias(const VertexAttribAlias &alias)
Definition State:268
void setUseVertexAttributeAliasing(bool flag)
void resetVertexAttributeAlias(bool compactAliasing=true, unsigned int numTextureUnits=8)
bool checkGLErrors(const char *str1=0, const char *str2=0) const
void glDrawBuffer(GLenum buffer)
void bindElementBufferObject(osg::GLBufferObject *ebo)
Definition State:576
bool convertVertexShaderSourceToOsgBuiltIns(std::string &source) const
void setInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer)
Definition State:724
static Timer * instance()
double delta_s(Timer_t t1, Timer_t t2) const
Definition Timer:59
Definition VertexArrayState:25
GLuint getVertexArrayObject() const
Definition VertexArrayState:173
Definition GLExtensions:135
T * get() const
Definition ref_ptr:117
author: Julien Valentin 2017 (mp3butcher@hotmail.com)
Definition AlphaFunc:19
T maximum(T lhs, T rhs)
Definition Math:85
unsigned long long Timer_t
Definition Timer:24
std::set< std::string > ShaderDefines
Definition Shader:37
#define OSG_EXPORT
Definition osg/Export:39
~ApplyModeProxy()
Definition State:355
ApplyModeProxy(osg::State &state, GLenum mode, bool value)
Definition State:349
bool _need_to_apply_value
Definition State:363
osg::State & _state
Definition State:360
GLenum _mode
Definition State:361
bool _previous_value
Definition State:362
bool _previous_value
Definition State:382
osg::State & _state
Definition State:379
GLenum _mode
Definition State:381
bool _need_to_apply_value
Definition State:383
ApplyTextureModeProxy(osg::State &state, unsigned int unit, GLenum mode, bool value)
Definition State:368
~ApplyTextureModeProxy()
Definition State:374
unsigned int _unit
Definition State:380
const ShaderComponent * last_applied_shadercomponent
Definition State:1013
AttributeStack()
Definition State:999
bool changed
Definition State:1011
AttributeVec attributeVec
Definition State:1015
const StateAttribute * last_applied_attribute
Definition State:1012
void print(std::ostream &fout) const
ref_ptr< const StateAttribute > global_default_attribute
Definition State:1014
bool changed
Definition State:1051
bool updateCurrentDefines()
std::map< std::string, DefineStack > DefineStackMap
Definition State:1049
DefineStackMap map
Definition State:1050
StateSet::DefineList currentDefines
Definition State:1052
DefineMap()
Definition State:1046
DefineStack()
Definition State:1035
void print(std::ostream &fout) const
std::vector< StateSet::DefinePair > DefineVec
Definition State:1033
DefineVec defineVec
Definition State:1041
bool changed
Definition State:1040
virtual void completed(osg::State *)=0
bool valid
Definition State:990
std::vector< StateAttribute::GLModeValue > ValueVec
Definition State:978
bool changed
Definition State:991
ValueVec valueVec
Definition State:994
bool global_default_value
Definition State:993
bool last_applied_value
Definition State:992
void print(std::ostream &fout) const
ModeStack()
Definition State:980
~SetCurrentVertexArrayStateProxy()
Definition State:539
SetCurrentVertexArrayStateProxy(osg::State &state, VertexArrayState *vas)
Definition State:538
osg::State & _state
Definition State:540