From e236acfed5bcf703a9dc47f248af62862e7a86c7 Mon Sep 17 00:00:00 2001 From: Julien Valentin Date: Fri, 17 Jun 2016 10:32:01 +0100 Subject: [PATCH] Added OpenGL extensions related to shader subroutine --- include/osg/GLExtensions | 14 ++++++++------ src/osg/GLExtensions.cpp | 3 +++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/include/osg/GLExtensions b/include/osg/GLExtensions index 39bf312d0..212cc075b 100644 --- a/include/osg/GLExtensions +++ b/include/osg/GLExtensions @@ -572,12 +572,14 @@ class OSG_EXPORT GLExtensions : public osg::Referenced void (GL_APIENTRY * glGetRenderbufferParameteriv) (GLenum, GLenum, GLint*); //subroutine - GLint(GL_APIENTRY* glGetSubroutineUniformLocation)( GLuint program, GLenum shadertype, const GLchar *name); - void (GL_APIENTRY * glGetActiveSubroutineUniformName)( GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); - void (GL_APIENTRY * glGetActiveSubroutineUniformiv)( GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); - GLuint (GL_APIENTRY * glGetSubroutineIndex)( GLuint program, GLenum shadertype, const GLchar *name); - void (GL_APIENTRY * glGetActiveSubroutineName)( GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); - void (GL_APIENTRY * glGetProgramStageiv)( GLuint program, GLenum shadertype, GLenum pname, GLint *values); + GLint(GL_APIENTRY* glGetSubroutineUniformLocation) (GLuint program, GLenum shadertype, const GLchar *name); + void (GL_APIENTRY * glGetActiveSubroutineUniformName) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void (GL_APIENTRY * glGetActiveSubroutineUniformiv) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint (GL_APIENTRY * glGetSubroutineIndex) (GLuint program, GLenum shadertype, const GLchar *name); + void (GL_APIENTRY * glGetActiveSubroutineName) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void (GL_APIENTRY * glGetProgramStageiv) (GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void (GL_APIENTRY *glUniformSubroutinesuiv) (GLenum shadertype, GLsizei count,const GLuint * indices); + void (GL_APIENTRY * glGetUniformSubroutineuiv) (GLenum shadertype, GLint location, GLuint *params); // Sync GLsync (GL_APIENTRY * glFenceSync) (GLenum condition, GLbitfield flags); diff --git a/src/osg/GLExtensions.cpp b/src/osg/GLExtensions.cpp index f5e44fc00..fa1407d4b 100644 --- a/src/osg/GLExtensions.cpp +++ b/src/osg/GLExtensions.cpp @@ -1047,6 +1047,9 @@ GLExtensions::GLExtensions(unsigned int contextID) osg::setGLExtensionFuncPtr(glGetSubroutineIndex, "glGetSubroutineIndex"); osg::setGLExtensionFuncPtr(glGetActiveSubroutineName, "glGetActiveSubroutineName"); osg::setGLExtensionFuncPtr(glGetProgramStageiv, "glGetProgramStageiv"); + osg::setGLExtensionFuncPtr(glUniformSubroutinesuiv, "glUniformSubroutinesuiv"); + osg::setGLExtensionFuncPtr(glGetUniformSubroutineuiv, "glGetUniformSubroutineuiv"); + // Sync osg::setGLExtensionFuncPtr(glFenceSync, "glFenceSync");