14 #ifndef OSG_GLEXTENSIONS
15 #define OSG_GLEXTENSIONS 1
18 #include <osg/GLDefines>
93 template<
typename T,
typename R>
96 memcpy(&dest, &src,
sizeof(src));
100 template<
typename T,
typename R>
104 memcpy(&dest, &src,
sizeof(src));
138 static GLExtensions* Get(
unsigned int contextID,
bool createIfNotInitalized);
143 static void Set(
unsigned int contextID,
GLExtensions* extensions);
146 GLuint getCurrentProgram()
const;
147 bool getProgramInfoLog( GLuint program, std::string& result )
const;
148 bool getShaderInfoLog( GLuint shader, std::string& result )
const;
149 bool getAttribLocation(
const char* attribName, GLuint& slot )
const;
150 bool getFragDataLocation(
const char* fragDataName, GLuint& slot)
const;
184 void (
GL_APIENTRY * glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *
type,
GLchar *name);
185 void (
GL_APIENTRY * glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *
type,
GLchar *name);
186 void (
GL_APIENTRY * glGetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *
obj);
189 void (
GL_APIENTRY * glGetObjectParameterivARB)(GLuint program, GLenum pname, GLint *params);
191 void (
GL_APIENTRY * glGetInfoLogARB)(GLuint program, GLsizei bufSize, GLsizei *length,
GLchar *infoLog);
192 void (
GL_APIENTRY * glGetShaderiv)(GLuint shader, GLenum pname, GLint *params);
193 void (
GL_APIENTRY * glGetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei *length,
GLchar *infoLog);
200 void (
GL_APIENTRY * glGetVertexAttribiv)(GLuint index, GLenum pname, GLint *params);
202 GLboolean (
GL_APIENTRY * glIsProgram)(GLuint program);
203 GLboolean (
GL_APIENTRY * glIsShader)(GLuint shader);
210 void (
GL_APIENTRY * glUniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat
v3);
216 void (
GL_APIENTRY * glUniform2fv)(GLint location, GLsizei count,
const GLfloat *value);
217 void (
GL_APIENTRY * glUniform3fv)(GLint location, GLsizei count,
const GLfloat *value);
218 void (
GL_APIENTRY * glUniform4fv)(GLint location, GLsizei count,
const GLfloat *value);
220 void (
GL_APIENTRY * glUniform2iv)(GLint location, GLsizei count,
const GLint *value);
221 void (
GL_APIENTRY * glUniform3iv)(GLint location, GLsizei count,
const GLint *value);
222 void (
GL_APIENTRY * glUniform4iv)(GLint location, GLsizei count,
const GLint *value);
223 void (
GL_APIENTRY * glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose,
const GLfloat *
value);
224 void (
GL_APIENTRY * glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose,
const GLfloat *value);
225 void (
GL_APIENTRY * glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose,
const GLfloat *value);
236 void (
GL_APIENTRY * glVertexAttrib2fv)(GLuint index,
const GLfloat *v);
238 void (
GL_APIENTRY * glVertexAttrib2sv)(GLuint index,
const GLshort *v);
242 void (
GL_APIENTRY * glVertexAttrib3fv)(GLuint index,
const GLfloat *v);
244 void (
GL_APIENTRY * glVertexAttrib3sv)(GLuint index,
const GLshort *v);
247 void (
GL_APIENTRY * glVertexAttrib4Nsv)(GLuint index,
const GLshort *v);
248 void (
GL_APIENTRY * glVertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte
z, GLubyte w);
255 void (
GL_APIENTRY * glVertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat
w);
256 void (
GL_APIENTRY * glVertexAttrib4fv)(GLuint index,
const GLfloat *v);
258 void (
GL_APIENTRY * glVertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort
w);
259 void (
GL_APIENTRY * glVertexAttrib4sv)(GLuint index,
const GLshort *v);
260 void (
GL_APIENTRY * glVertexAttrib4ubv)(GLuint index,
const GLubyte *v);
261 void (
GL_APIENTRY * glVertexAttrib4uiv)(GLuint index,
const GLuint *v);
262 void (
GL_APIENTRY * glVertexAttrib4usv)(GLuint index,
const GLushort *v);
263 void (
GL_APIENTRY * glVertexAttribPointer)(GLuint index, GLint size, GLenum
type, GLboolean normalized, GLsizei stride,
const GLvoid *pointer);
265 void (
GL_APIENTRY * glUniformMatrix2x3fv)( GLint location, GLsizei count, GLboolean transpose,
const GLfloat* value );
266 void (
GL_APIENTRY * glUniformMatrix3x2fv)( GLint location, GLsizei count, GLboolean transpose,
const GLfloat* value );
267 void (
GL_APIENTRY * glUniformMatrix2x4fv)( GLint location, GLsizei count, GLboolean transpose,
const GLfloat* value );
268 void (
GL_APIENTRY * glUniformMatrix4x2fv)( GLint location, GLsizei count, GLboolean transpose,
const GLfloat* value );
269 void (
GL_APIENTRY * glUniformMatrix3x4fv)( GLint location, GLsizei count, GLboolean transpose,
const GLfloat* value );
270 void (
GL_APIENTRY * glUniformMatrix4x3fv)( GLint location, GLsizei count, GLboolean transpose,
const GLfloat* value );
277 GLint (
GL_APIENTRY * glGetFragDataLocation)( GLuint program,
const GLchar* name );
281 void (
GL_APIENTRY * glUniform4ui)( GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint
v3 );
283 void (
GL_APIENTRY * glUniform2uiv)( GLint location, GLsizei count,
const GLuint *value );
284 void (
GL_APIENTRY * glUniform3uiv)( GLint location, GLsizei count,
const GLuint *value );
285 void (
GL_APIENTRY * glUniform4uiv)( GLint location, GLsizei count,
const GLuint *value );
286 GLuint (
GL_APIENTRY * glGetHandleARB) (GLenum pname);
305 void (
GL_APIENTRY * glUniformMatrix3dv)(GLint location, GLsizei count, GLboolean transpose,
const GLdouble *value);
306 void (
GL_APIENTRY * glUniformMatrix4dv)(GLint location, GLsizei count, GLboolean transpose,
const GLdouble *value);
307 void (
GL_APIENTRY * glUniformMatrix2x3dv)( GLint location, GLsizei count, GLboolean transpose,
const GLdouble* value );
308 void (
GL_APIENTRY * glUniformMatrix3x2dv)( GLint location, GLsizei count, GLboolean transpose,
const GLdouble* value );
309 void (
GL_APIENTRY * glUniformMatrix2x4dv)( GLint location, GLsizei count, GLboolean transpose,
const GLdouble* value );
310 void (
GL_APIENTRY * glUniformMatrix4x2dv)( GLint location, GLsizei count, GLboolean transpose,
const GLdouble* value );
311 void (
GL_APIENTRY * glUniformMatrix3x4dv)( GLint location, GLsizei count, GLboolean transpose,
const GLdouble* value );
312 void (
GL_APIENTRY * glUniformMatrix4x3dv)( GLint location, GLsizei count, GLboolean transpose,
const GLdouble* value );
328 GLboolean (
GL_APIENTRY * glIsBuffer) (GLuint buffer);
330 GLvoid* (
GL_APIENTRY * glMapBuffer) (GLenum target, GLenum access);
332 GLboolean (
GL_APIENTRY * glUnmapBuffer) (GLenum target);
333 void (
GL_APIENTRY * glGetBufferParameteriv) (GLenum target, GLenum pname, GLint *params);
336 void (
GL_APIENTRY * glBindBufferBase) (GLenum target, GLuint index, GLuint buffer);
346 void (
GL_APIENTRY * glBlendFuncSeparatei) (GLuint buf, GLenum
sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) ;
365 void (
GL_APIENTRY * glMultiTexCoord2fv) (GLenum target,
const GLfloat* coord);
366 void (
GL_APIENTRY * glMultiTexCoord3fv) (GLenum target,
const GLfloat* coord);
367 void (
GL_APIENTRY * glMultiTexCoord4fv) (GLenum target,
const GLfloat* coord);
378 GLboolean (
GL_APIENTRY * glIsOcclusionQuery) ( GLuint id );
381 void (
GL_APIENTRY * glGetOcclusionQueryiv) ( GLuint id, GLenum pname, GLint *params );
384 void (
GL_APIENTRY * glGetQueryiv) (GLenum target, GLenum pname, GLint *params);
391 void (
GL_APIENTRY * glGetQueryObjectiv) (GLuint id, GLenum pname, GLint *params);
392 void (
GL_APIENTRY * glGetQueryObjectuiv) (GLuint id, GLenum pname, GLuint *params);
450 return (filter==GL_LINEAR || filter==GL_NEAREST) ?
451 isNonPowerOfTwoTextureNonMipMappedSupported :
452 isNonPowerOfTwoTextureMipMappedSupported;
459 void (
GL_APIENTRY * glTexImage2DMultisample) (GLenum target, GLsizei samples, GLint internalformat, GLsizei
width, GLsizei
height, GLboolean fixedsamplelocations);
472 void (
GL_APIENTRY * glTexSubImage3D) ( GLenum target, GLint
level, GLint xoffset, GLint yoffset, GLint
zoffset, GLsizei
width, GLsizei
height, GLsizei
depth, GLenum
format, GLenum
type,
const GLvoid *
pixels);
475 void (
GL_APIENTRY * glCompressedTexSubImage3D) ( GLenum target, GLint
level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei
width, GLsizei
height, GLsizei
depth, GLenum
format, GLsizei
imageSize,
const GLvoid *data );
516 void (
GL_APIENTRY * glColorMaski)(GLuint buf, GLboolean
red, GLboolean green, GLboolean blue, GLboolean alpha);
556 void (
GL_APIENTRY * glRenderbufferStorageMultisampleCoverageNV) (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
560 GLenum (
GL_APIENTRY * glCheckFramebufferStatus) (GLenum);
563 void (
GL_APIENTRY * glFramebufferTexture2D) (GLenum, GLenum, GLenum, GLuint, GLint);
564 void (
GL_APIENTRY * glFramebufferTexture3D) (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
565 void (
GL_APIENTRY * glFramebufferTexture) (GLenum, GLenum, GLint, GLint);
566 void (
GL_APIENTRY * glFramebufferTextureLayer) (GLenum, GLenum, GLuint, GLint, GLint);
568 void (
GL_APIENTRY * glFramebufferRenderbuffer) (GLenum, GLenum, GLenum, GLuint);
572 void (
GL_APIENTRY * glGetRenderbufferParameteriv) (GLenum, GLenum, GLint*);
588 void (
GL_APIENTRY * glGetTransformFeedbackVarying) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *
type,
GLchar *name);
589 void (
GL_APIENTRY * glBindTransformFeedback) (GLenum target, GLuint id);
590 void (
GL_APIENTRY * glDeleteTransformFeedbacks) (GLsizei n,
const GLuint *ids);
592 GLboolean (
GL_APIENTRY * glIsTransformFeedback) (GLuint id);
599 void (
GL_APIENTRY * glCreateTransformFeedbacks) (GLsizei n, GLuint *ids);
600 void (
GL_APIENTRY * glTransformFeedbackBufferBase) (GLuint xfb, GLuint index, GLuint buffer);
609 GLboolean (
GL_APIENTRY * glIsVertexArray) (GLuint handle);
bool isTextureMultisampleSupported
bool isTextureCompressionPVRTC4BPPSupported
bool isSecondaryColorSupported
OSG_EXPORT void setGLExtensionDisableString(const std::string &disableString)
GLenum GLsizei const void * string
bool isTextureIntegerEXTSupported
GLintptr GLsizeiptr GLvoid * data
bool isTextureCompressionPVRTC2BPPSupported
GLdouble GLdouble GLdouble z
GLsizei const GLchar *const * varyings
bool isRectangleSupported
GLint GLenum internalFormat
bool isBlendColorSupported
bool isStencilWrapSupported
GLsizei const GLuint * uniformIndices
bool isNonPowerOfTwoTextureSupported(GLenum filter) const
bool isTransformFeedbackSupported
bool isMultisampleFilterHintSupported
bool areTessellationShadersSupported
GLint GLenum GLsizei width
GLint GLenum GLsizei GLsizei GLsizei depth
bool isFragmentShaderSupported
GLsizei GLsizei GLenum * binaryFormat
bool isTextureCompressionS3TCSupported
GLdouble GLdouble GLdouble GLdouble w
GLint GLint GLint GLint zoffset
GLenum const GLint * data
bool isSampleMaskiSupported
bool isLanguage100Supported
GLenum GLuint GLint * param
bool isRenderbufferMultisampleSupported() const
GLfloat GLfloat GLfloat GLfloat v3
bool isPointSpriteSupported
GLfloat GLfloat GLfloat GLfloat w
bool isTextureStorageEnabled
bool isTextureFilterAnisotropicSupported
bool setGLExtensionFuncPtr(T &t, const char *str1)
bool isPackedDepthStencilSupported
GLenum const GLvoid GLsizei length
GLbitfield GLuint64 timeout
bool isNonPowerOfTwoTextureMipMappedSupported
bool isTextureCompressionPVRTCSupported
bool isRenderbufferMultisampleCoverageSupported() const
GLuint GLuint uniformBlockBinding
OSG_EXPORT std::string & getGLExtensionDisableString()
bool isCompressedTexSubImage3DSupported() const
bool isBlendFuncSeparateSupported
GLint GLint GLint GLint GLsizei GLsizei GLsizei GLenum GLsizei imageSize
GLshort GLshort GLshort GLshort w
bool isBufferObjectSupported
bool isTextureMultisampledSupported
bool isMultiTexturingSupported
bool isTextureCompressionETC2Supported
GLsizei const GLdouble * value
OSG_EXPORT void * getGLExtensionFuncPtr(const char *funcName)
GLuint GLuint GLsizei instancecount
bool isTimerQuerySupported
bool isTexStorage2DSupported() const
GLuint const GLchar * name
bool isGpuShader4Supported
bool isClientStorageSupported
GLsizei GLenum GLsizei width
GLint GLenum GLsizei width
T convertPointerType(R src)
GLsizei const GLchar ** uniformNames
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei imageSize
bool isBlendEquationSupported
bool isTextureCompressionARBSupported
bool isBindImageTextureSupported() const
GLsizei GLint GLsizei width
typedef void(GL_APIENTRY *GLTexImage3DProc)(GLenum target
GLenum GLsizei GLsizei GLint * values
bool isClampColorSupported
GLuint GLuint GLintptr GLsizei size
const GLuint * renderbuffers
GLuint GLuint GLuint GLuint v3
bool isTextureCompressionETCSupported
GLsizei GLsizei GLchar * source
bool isUniformBufferObjectSupported
GLint GLint GLint GLint GLint GLint y
bool isFrameBufferObjectSupported
bool isShaderAtomicCountersSupported
OSG_EXPORT bool isGLExtensionSupported(unsigned int contextID, const char *extension)
bool isCompressedTexSubImage2DSupported() const
GLuint GLsizei GLsizei GLsizei GLenum * type
bool isGeometryShader4Supported
bool isSeparateStencilSupported
bool isTextureBorderClampSupported
OSG_EXPORT bool isExtensionInExtensionString(const char *extension, const char *extensionString)
GLsizei GLboolean const GLfloat * value
bool preferGenerateMipmapSGISForPowerOfTwo
GLuint GLsizei GLsizei GLchar * uniformName
bool isTextureCompressionRGTCSupported
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
GLint GLint GLint GLint v3
GLenum GLuint GLint64 * param
bool isOcclusionQuerySupported
bool isVertexShaderSupported
bool isGenerateMipMapSupported
GLint GLenum GLsizei GLsizei height
GLfloat GLfloat GLfloat v2
bool convertPointer(T &dest, R src)
bool isARBTimerQuerySupported
bool isCompressedTexImage3DSupported() const
GLuint const GLfloat * params
bool isARBOcclusionQuerySupported
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
GLubyte GLubyte GLubyte z
bool isTextureMirroredRepeatSupported
GLsizei const GLfloat * value
bool isVertexProgramSupported
bool isTexture2DArraySupported
GLenum const GLuint * data
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
bool isFragmentProgramSupported
GLsizei const GLchar ** string
const GLchar * uniformBlockName
bool isTextureMaxLevelSupported
float glslLanguageVersion
bool isPointParametersSupported
bool isClipControlSupported
bool isGpuShaderFp64Supported
GLenum GLenum sfactorAlpha
bool isTexture3DSupported
GLsizeiptr const GLvoid GLenum usage
bool _isTextureStorageEnabled
GLsizei const GLuint * value
bool isPointSpriteCoordOriginSupported
GLfloat GLfloat GLfloat z
bool isCompressedTexImage2DSupported() const
bool isShaderObjectsSupported
GLsizei const GLint * value
GLdouble GLdouble GLdouble GLdouble v3
GLsizei GLsizei GLuint * obj
bool isTextureSwizzleSupported
GLint GLenum GLsizei GLsizei GLsizei GLint border
bool isMultisampleSupported
GLsizei GLboolean const GLdouble * value
bool isShadowAmbientSupported
bool isNonPowerOfTwoTextureNonMipMappedSupported
GLint GLint GLint yoffset
GLuint GLsizei GLsizei GLchar * uniformBlockName
OSG_EXPORT bool isGLExtensionOrVersionSupported(unsigned int contextID, const char *extension, float requiredGlVersion)
GLuint GLsizei GLsizei GLint GLenum * type
bool isGetProgramBinarySupported
bool isSGIXMinMaxSupported
bool isTextureEdgeClampSupported
bool isStencilTwoSidedSupported
OSG_EXPORT float getGLVersionNumber()
bool isBlendEquationSeparateSupported
const GLuint * framebuffers
GLuint GLuint GLintptr GLsizeiptr size
GLuint GLsizei instancecount
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum format