From 49c48a550971d9b68dc84ec38d398bb6392590c1 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 10 Dec 2014 13:05:47 +0000 Subject: [PATCH] Added OpenGL Transform Feedback extensions. git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14600 16af8721-9629-0410-8352-f15c8da7e697 --- include/osg/GLExtensions | 23 +++++++++++++++++++++++ src/osg/GLExtensions.cpp | 23 +++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/include/osg/GLExtensions b/include/osg/GLExtensions index b3b6a0fc8..ec625651d 100644 --- a/include/osg/GLExtensions +++ b/include/osg/GLExtensions @@ -577,6 +577,29 @@ class OSG_EXPORT GLExtensions : public osg::Referenced void (GL_APIENTRY * glGetSynciv) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + // Transform feedback + void (GL_APIENTRY * glBeginTransformFeedback) (GLenum primitiveMode); + void (GL_APIENTRY * glEndTransformFeedback) (void); + void (GL_APIENTRY * glTransformFeedbackVaryings) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); + void (GL_APIENTRY * glGetTransformFeedbackVarying) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void (GL_APIENTRY * glBindTransformFeedback) (GLenum target, GLuint id); + void (GL_APIENTRY * glDeleteTransformFeedbacks) (GLsizei n, const GLuint *ids); + void (GL_APIENTRY * glGenTransformFeedbacks) (GLsizei n, GLuint *ids); + GLboolean (GL_APIENTRY * glIsTransformFeedback) (GLuint id); + void (GL_APIENTRY * glPauseTransformFeedback) (void); + void (GL_APIENTRY * glResumeTransformFeedback) (void); + void (GL_APIENTRY * glDrawTransformFeedback) (GLenum mode, GLuint id); + void (GL_APIENTRY * glDrawTransformFeedbackStream) (GLenum mode, GLuint id, GLuint stream); + void (GL_APIENTRY * glDrawTransformFeedbackInstanced) (GLenum mode, GLuint id, GLsizei instancecount); + void (GL_APIENTRY * glDrawTransformFeedbackStreamInstanced) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void (GL_APIENTRY * glCreateTransformFeedbacks) (GLsizei n, GLuint *ids); + void (GL_APIENTRY * glTransformFeedbackBufferBase) (GLuint xfb, GLuint index, GLuint buffer); + void (GL_APIENTRY * glTransformFeedbackBufferRange) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size); + void (GL_APIENTRY * glGetTransformFeedbackiv) (GLuint xfb, GLenum pname, GLint *param); + void (GL_APIENTRY * glGetTransformFeedbacki_v) (GLuint xfb, GLenum pname, GLuint index, GLint *param); + void (GL_APIENTRY * glGetTransformFeedbacki64_v) (GLuint xfb, GLenum pname, GLuint index, GLint64 *param); + + }; diff --git a/src/osg/GLExtensions.cpp b/src/osg/GLExtensions.cpp index dd83bad38..4bf3a8771 100644 --- a/src/osg/GLExtensions.cpp +++ b/src/osg/GLExtensions.cpp @@ -1042,6 +1042,29 @@ GLExtensions::GLExtensions(unsigned int contextID) osg::setGLExtensionFuncPtr(glWaitSync, "glWaitSync"); osg::setGLExtensionFuncPtr(glGetSynciv, "glGetSynciv"); + + // Transform Feeedback + osg::setGLExtensionFuncPtr(glBeginTransformFeedback, "glBeginTransformFeedback", "glBeginTransformFeedbackEXT"); + osg::setGLExtensionFuncPtr(glEndTransformFeedback, "glEndTransformFeedback", "glEndTransformFeedbackEXT"); + osg::setGLExtensionFuncPtr(glTransformFeedbackVaryings, "glTransformFeedbackVaryings", "glTransformFeedbackVaryingsEXT"); + osg::setGLExtensionFuncPtr(glGetTransformFeedbackVarying, "glGetTransformFeedbackVarying", "glGetTransformFeedbackVaryingEXT"); + osg::setGLExtensionFuncPtr(glBindTransformFeedback, "glBindTransformFeedback"); + osg::setGLExtensionFuncPtr(glDeleteTransformFeedbacks, "glDeleteTransformFeedbacks"); + osg::setGLExtensionFuncPtr(glGenTransformFeedbacks, "glGenTransformFeedbacks"); + osg::setGLExtensionFuncPtr(glIsTransformFeedback, "glIsTransformFeedback"); + osg::setGLExtensionFuncPtr(glPauseTransformFeedback, "glPauseTransformFeedback"); + osg::setGLExtensionFuncPtr(glResumeTransformFeedback, "glResumeTransformFeedback"); + osg::setGLExtensionFuncPtr(glDrawTransformFeedback, "glDrawTransformFeedback"); + osg::setGLExtensionFuncPtr(glDrawTransformFeedbackStream, "glDrawTransformFeedbackStream"); + osg::setGLExtensionFuncPtr(glDrawTransformFeedbackInstanced, "glDrawTransformFeedbackInstanced"); + osg::setGLExtensionFuncPtr(glDrawTransformFeedbackStreamInstanced, "glDrawTransformFeedbackStreamInstanced"); + osg::setGLExtensionFuncPtr(glCreateTransformFeedbacks, "glCreateTransformFeedbacks"); + osg::setGLExtensionFuncPtr(glTransformFeedbackBufferBase, "glTransformFeedbackBufferBase"); + osg::setGLExtensionFuncPtr(glTransformFeedbackBufferRange, "glTransformFeedbackBufferRange"); + osg::setGLExtensionFuncPtr(glGetTransformFeedbackiv, "glGetTransformFeedbackiv"); + osg::setGLExtensionFuncPtr(glGetTransformFeedbacki_v, "glGetTransformFeedbacki_v"); + osg::setGLExtensionFuncPtr(glGetTransformFeedbacki64_v, "glGetTransformFeedbacki64_v"); + }