diff --git a/include/osg/GLExtensions b/include/osg/GLExtensions index ea8e9945c..65e8eb697 100644 --- a/include/osg/GLExtensions +++ b/include/osg/GLExtensions @@ -580,6 +580,12 @@ class OSG_EXPORT GLExtensions : public osg::Referenced void (GL_APIENTRY * glWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout); void (GL_APIENTRY * glGetSynciv) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + // Indirect Rendering + void (GL_APIENTRY * glDrawArraysIndirect) (GLenum mode, const void * indirect); + void (GL_APIENTRY * glMultiDrawArraysIndirect) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); + void (GL_APIENTRY * glDrawElementsIndirect) (GLenum mode, GLenum type, const void *indirect); + void (GL_APIENTRY * glMultiDrawElementsIndirect)( GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); + // Transform feedback void (GL_APIENTRY * glBeginTransformFeedback) (GLenum primitiveMode); diff --git a/src/osg/GLExtensions.cpp b/src/osg/GLExtensions.cpp index 92c5eb25c..1114d6d13 100644 --- a/src/osg/GLExtensions.cpp +++ b/src/osg/GLExtensions.cpp @@ -1049,6 +1049,11 @@ GLExtensions::GLExtensions(unsigned int contextID) osg::setGLExtensionFuncPtr(glWaitSync, "glWaitSync"); osg::setGLExtensionFuncPtr(glGetSynciv, "glGetSynciv"); + // Indirect Rendering + osg::setGLExtensionFuncPtr(glDrawArraysIndirect, "glDrawArraysIndirect", "glDrawArraysIndirectEXT"); + osg::setGLExtensionFuncPtr(glMultiDrawArraysIndirect, "glMultiDrawArraysIndirect", "glMultiDrawArraysIndirectEXT"); + osg::setGLExtensionFuncPtr(glDrawElementsIndirect, "glDrawElementsIndirect", "glDrawElementsIndirectEXT"); + osg::setGLExtensionFuncPtr(glMultiDrawElementsIndirect, "glMultiDrawElementsIndirect", "glMultiDrawElementsIndirectEXT"); // Transform Feeedback osg::setGLExtensionFuncPtr(glBeginTransformFeedback, "glBeginTransformFeedback", "glBeginTransformFeedbackEXT");