/*
* Copyright (c) 2010-2019 Belledonne Communications SARL.
*
* This file is part of mediastreamer2.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#ifndef msogl_functions_h
#define msogl_functions_h
#ifdef __APPLE__
#include "TargetConditionals.h"
#endif
#if TARGET_OS_IPHONE
#include
#include
#elif TARGET_OS_MAC
#include
#include
#elif __ANDROID__
#include
#include
#elif _WIN32
#if !defined(QOPENGLFUNCTIONS_H)
#include
#endif
#elif !defined(QOPENGLFUNCTIONS_H) // glew is already included by QT.
#include
#endif
// =============================================================================
typedef void (*resolveGlActiveTexture)(GLenum texture);
typedef void (*resolveGlAttachShader)(GLuint program, GLuint shader);
typedef void (*resolveGlBindAttribLocation)(GLuint program, GLuint index, const char *name);
typedef void (*resolveGlBindBuffer)(GLenum target, GLuint buffer);
typedef void (*resolveGlBindFramebuffer)(GLenum target, GLuint framebuffer);
typedef void (*resolveGlBindRenderbuffer)(GLenum target, GLuint renderbuffer);
typedef void (*resolveGlBindTexture)(GLenum target, GLuint texture);
typedef void (*resolveGlBlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
typedef void (*resolveGlBlendEquation)(GLenum mode);
typedef void (*resolveGlBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha);
typedef void (*resolveGlBlendFunc)(GLenum sfactor, GLenum dfactor);
typedef void (*resolveGlBlendFuncSeparate)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
typedef void (*resolveGlBufferData)(GLenum target, GLsizei *size, const void *data, GLenum usage);
typedef void (*resolveGlBufferSubData)(GLenum target, GLint *offset, GLsizei *size, const void *data);
typedef GLenum (*resolveGlCheckFramebufferStatus)(GLenum target);
typedef void (*resolveGlClear)(GLbitfield mask);
typedef void (*resolveGlClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
typedef void (*resolveGlClearDepthf)(GLclampf depth);
typedef void (*resolveGlClearStencil)(GLint s);
typedef void (*resolveGlColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
typedef void (*resolveGlCompileShader)(GLuint shader);
typedef void (*resolveGlCompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
typedef void (*resolveGlCompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
typedef void (*resolveGlCopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
typedef void (*resolveGlCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLuint (*resolveGlCreateProgram)(void);
typedef GLuint (*resolveGlCreateShader)(GLenum type);
typedef void (*resolveGlCullFace)(GLenum mode);
typedef void (*resolveGlDeleteBuffers)(GLsizei n, const GLuint *buffers);
typedef void (*resolveGlDeleteFramebuffers)(GLsizei n, const GLuint *framebuffers);
typedef void (*resolveGlDeleteProgram)(GLuint program);
typedef void (*resolveGlDeleteRenderbuffers)(GLsizei n, const GLuint *renderbuffers);
typedef void (*resolveGlDeleteShader)(GLuint shader);
typedef void (*resolveGlDeleteTextures)(GLsizei n, const GLuint *textures);
typedef void (*resolveGlDepthFunc)(GLenum func);
typedef void (*resolveGlDepthMask)(GLboolean flag);
typedef void (*resolveGlDepthRangef)(GLclampf zNear, GLclampf zFar);
typedef void (*resolveGlDetachShader)(GLuint program, GLuint shader);
typedef void (*resolveGlDisable)(GLenum cap);
typedef void (*resolveGlDisableVertexAttribArray)(GLuint index);
typedef void (*resolveGlDrawArrays)(GLenum mode, GLint first, GLsizei count);
typedef void (*resolveGlDrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
typedef void (*resolveGlEnable)(GLenum cap);
typedef void (*resolveGlEnableVertexAttribArray)(GLuint index);
typedef void (*resolveGlFinish)(void);
typedef void (*resolveGlFlush)(void);
typedef void (*resolveGlFramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
typedef void (*resolveGlFramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef void (*resolveGlFrontFace)(GLenum mode);
typedef void (*resolveGlGenBuffers)(GLsizei n, GLuint *buffers);
typedef void (*resolveGlGenFramebuffers)(GLsizei n, GLuint *framebuffers);
typedef void (*resolveGlGenRenderbuffers)(GLsizei n, GLuint *renderbuffers);
typedef void (*resolveGlGenTextures)(GLsizei n, GLuint *textures);
typedef void (*resolveGlGenerateMipmap)(GLenum target);
typedef void (*resolveGlGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name);
typedef void (*resolveGlGetActiveUniform)(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name);
typedef void (*resolveGlGetAttachedShaders)(GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders);
typedef GLint (*resolveGlGetAttribLocation)(GLuint program, const char *name);
typedef void (*resolveGlGetBooleanv)(GLenum pname, GLboolean *params);
typedef void (*resolveGlGetBufferParameteriv)(GLenum target, GLenum pname, GLint *params);
typedef GLenum (*resolveGlGetError)(void);
typedef void (*resolveGlGetFloatv)(GLenum pname, GLfloat *params);
typedef void (*resolveGlGetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint *params);
typedef void (*resolveGlGetIntegerv)(GLenum pname, GLint *params);
typedef void (*resolveGlGetProgramInfoLog)(GLuint program, GLsizei bufsize, GLsizei *length, char *infolog);
typedef void (*resolveGlGetProgramiv)(GLuint program, GLenum pname, GLint *params);
typedef void (*resolveGlGetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint *params);
typedef void (*resolveGlGetShaderInfoLog)(GLuint shader, GLsizei bufsize, GLsizei *length, char *infolog);
typedef void (*resolveGlGetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
typedef void (*resolveGlGetShaderSource)(GLuint shader, GLsizei bufsize, GLsizei *length, char *source);
typedef void (*resolveGlGetShaderiv)(GLuint shader, GLenum pname, GLint *params);
typedef const GLubyte *(*resolveGlGetString)(GLenum name);
typedef void (*resolveGlGetTexParameterfv)(GLenum target, GLenum pname, GLfloat *params);
typedef void (*resolveGlGetTexParameteriv)(GLenum target, GLenum pname, GLint *params);
typedef GLint (*resolveGlGetUniformLocation)(GLuint program, const char *name);
typedef void (*resolveGlGetUniformfv)(GLuint program, GLint location, GLfloat *params);
typedef void (*resolveGlGetUniformiv)(GLuint program, GLint location, GLint *params);
typedef void (*resolveGlGetVertexAttribPointerv)(GLuint index, GLenum pname, void **pointer);
typedef void (*resolveGlGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat *params);
typedef void (*resolveGlGetVertexAttribiv)(GLuint index, GLenum pname, GLint *params);
typedef void (*resolveGlHint)(GLenum target, GLenum mode);
typedef GLboolean (*resolveGlIsBuffer)(GLuint buffer);
typedef GLboolean (*resolveGlIsEnabled)(GLenum cap);
typedef GLboolean (*resolveGlIsFramebuffer)(GLuint framebuffer);
typedef GLboolean (*resolveGlIsProgram)(GLuint program);
typedef GLboolean (*resolveGlIsRenderbuffer)(GLuint renderbuffer);
typedef GLboolean (*resolveGlIsShader)(GLuint shader);
typedef GLboolean (*resolveGlIsTexture)(GLuint texture);
typedef void (*resolveGlLineWidth)(GLfloat width);
typedef void (*resolveGlLinkProgram)(GLuint program);
typedef void (*resolveGlPixelStorei)(GLenum pname, GLint param);
typedef void (*resolveGlPolygonOffset)(GLfloat factor, GLfloat units);
typedef void (*resolveGlReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
typedef void (*resolveGlReleaseShaderCompiler)(void);
typedef void (*resolveGlRenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
typedef void (*resolveGlSampleCoverage)(GLclampf value, GLboolean invert);
typedef void (*resolveGlScissor)(GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (*resolveGlShaderBinary)(GLint n, const GLuint *shaders, GLenum binaryformat, const void *binary, GLint length);
typedef void (*resolveGlShaderSource)(GLuint shader, GLsizei count, const char **string, const GLint *length);
typedef void (*resolveGlStencilFunc)(GLenum func, GLint ref, GLuint mask);
typedef void (*resolveGlStencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask);
typedef void (*resolveGlStencilMask)(GLuint mask);
typedef void (*resolveGlStencilMaskSeparate)(GLenum face, GLuint mask);
typedef void (*resolveGlStencilOp)(GLenum fail, GLenum zfail, GLenum zpass);
typedef void (*resolveGlStencilOpSeparate)(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
typedef void (*resolveGlTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (*resolveGlTexParameterf)(GLenum target, GLenum pname, GLfloat param);
typedef void (*resolveGlTexParameterfv)(GLenum target, GLenum pname, const GLfloat *params);
typedef void (*resolveGlTexParameteri)(GLenum target, GLenum pname, GLint param);
typedef void (*resolveGlTexParameteriv)(GLenum target, GLenum pname, const GLint *params);
typedef void (*resolveGlTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (*resolveGlUniform1f)(GLint location, GLfloat x);
typedef void (*resolveGlUniform1fv)(GLint location, GLsizei count, const GLfloat *v);
typedef void (*resolveGlUniform1i)(GLint location, GLint x);
typedef void (*resolveGlUniform1iv)(GLint location, GLsizei count, const GLint *v);
typedef void (*resolveGlUniform2f)(GLint location, GLfloat x, GLfloat y);
typedef void (*resolveGlUniform2fv)(GLint location, GLsizei count, const GLfloat *v);
typedef void (*resolveGlUniform2i)(GLint location, GLint x, GLint y);
typedef void (*resolveGlUniform2iv)(GLint location, GLsizei count, const GLint *v);
typedef void (*resolveGlUniform3f)(GLint location, GLfloat x, GLfloat y, GLfloat z);
typedef void (*resolveGlUniform3fv)(GLint location, GLsizei count, const GLfloat *v);
typedef void (*resolveGlUniform3i)(GLint location, GLint x, GLint y, GLint z);
typedef void (*resolveGlUniform3iv)(GLint location, GLsizei count, const GLint *v);
typedef void (*resolveGlUniform4f)(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (*resolveGlUniform4fv)(GLint location, GLsizei count, const GLfloat *v);
typedef void (*resolveGlUniform4i)(GLint location, GLint x, GLint y, GLint z, GLint w);
typedef void (*resolveGlUniform4iv)(GLint location, GLsizei count, const GLint *v);
typedef void (*resolveGlUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (*resolveGlUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (*resolveGlUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (*resolveGlUseProgram)(GLuint program);
typedef void (*resolveGlValidateProgram)(GLuint program);
typedef void (*resolveGlVertexAttrib1f)(GLuint indx, GLfloat x);
typedef void (*resolveGlVertexAttrib1fv)(GLuint indx, const GLfloat *values);
typedef void (*resolveGlVertexAttrib2f)(GLuint indx, GLfloat x, GLfloat y);
typedef void (*resolveGlVertexAttrib2fv)(GLuint indx, const GLfloat *values);
typedef void (*resolveGlVertexAttrib3f)(GLuint indx, GLfloat x, GLfloat y, GLfloat z);
typedef void (*resolveGlVertexAttrib3fv)(GLuint indx, const GLfloat *values);
typedef void (*resolveGlVertexAttrib4f)(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (*resolveGlVertexAttrib4fv)(GLuint indx, const GLfloat *values);
typedef void (*resolveGlVertexAttribPointer)(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *ptr);
typedef void (*resolveGlViewport)(GLint x, GLint y, GLsizei width, GLsizei height);
// -----------------------------------------------------------------------------
struct OpenGlFunctions {
resolveGlActiveTexture glActiveTexture;
resolveGlAttachShader glAttachShader;
resolveGlBindAttribLocation glBindAttribLocation;
// resolveGlBindBuffer glBindBuffer;
// resolveGlBindFramebuffer glBindFramebuffer;
// resolveGlBindRenderbuffer glBindRenderbuffer;
resolveGlBindTexture glBindTexture;
// resolveGlBlendColor glBlendColor;
// resolveGlBlendEquation glBlendEquation;
// resolveGlBlendEquationSeparate glBlendEquationSeparate;
// resolveGlBlendFunc glBlendFunc;
// resolveGlBlendFuncSeparate glBlendFuncSeparate;
// resolveGlBufferData glBufferData;
// resolveGlBufferSubData glBufferSubData;
// resolveGlCheckFramebufferStatus glCheckFramebufferStatus;
resolveGlClear glClear;
resolveGlClearColor glClearColor;
// resolveGlClearDepthf glClearDepthf;
// resolveGlClearStencil glClearStencil;
// resolveGlColorMask glColorMask;
resolveGlCompileShader glCompileShader;
// resolveGlCompressedTexImage2D glCompressedTexImage2D;
// resolveGlCompressedTexSubImage2D glCompressedTexSubImage2D;
// resolveGlCopyTexImage2D glCopyTexImage2D;
// resolveGlCopyTexSubImage2D glCopyTexSubImage2D;
resolveGlCreateProgram glCreateProgram;
resolveGlCreateShader glCreateShader;
// resolveGlCullFace glCullFace;
// resolveGlDeleteBuffers glDeleteBuffers;
// resolveGlDeleteFramebuffers glDeleteFramebuffers;
resolveGlDeleteProgram glDeleteProgram;
//resolveGlDeleteRenderbuffers glDeleteRenderbuffers;
resolveGlDeleteShader glDeleteShader;
resolveGlDeleteTextures glDeleteTextures;
// resolveGlDepthFunc glDepthFunc;
// resolveGlDepthMask glDepthMask;
// resolveGlDepthRangef glDepthRangef;
// resolveGlDetachShader glDetachShader;
resolveGlDisable glDisable;
// resolveGlDisableVertexAttribArray glDisableVertexAttribArray;
resolveGlDrawArrays glDrawArrays;
// resolveGlDrawElements glDrawElements;
// resolveGlEnable glEnable;
resolveGlEnableVertexAttribArray glEnableVertexAttribArray;
// resolveGlFinish glFinish;
// resolveGlFlush glFlush;
// resolveGlFramebufferRenderbuffer glFramebufferRenderbuffer;
// resolveGlFramebufferTexture2D glFramebufferTexture2D;
// resolveGlFrontFace glFrontFace;
// resolveGlGenBuffers glGenBuffers;
// resolveGlGenFramebuffers glGenFramebuffers;
// resolveGlGenRenderbuffers glGenRenderbuffers;
resolveGlGenTextures glGenTextures;
// resolveGlGenerateMipmap glGenerateMipmap;
// resolveGlGetActiveAttrib glGetActiveAttrib;
// resolveGlGetActiveUniform glGetActiveUniform;
// resolveGlGetAttachedShaders glGetAttachedShaders;
// resolveGlGetAttribLocation glGetAttribLocation;
// resolveGlGetBooleanv glGetBooleanv;
// resolveGlGetBufferParameteriv glGetBufferParameteriv;
resolveGlGetError glGetError;
// resolveGlGetFloatv glGetFloatv;
// resolveGlGetFramebufferAttachmentParameteriv glGetFramebufferAttachmentParameteriv;
// resolveGlGetIntegerv glGetIntegerv;
resolveGlGetProgramInfoLog glGetProgramInfoLog;
resolveGlGetProgramiv glGetProgramiv;
// resolveGlGetRenderbufferParameteriv glGetRenderbufferParameteriv;
resolveGlGetShaderInfoLog glGetShaderInfoLog;
// resolveGlGetShaderPrecisionFormat glGetShaderPrecisionFormat;
// resolveGlGetShaderSource glGetShaderSource;
resolveGlGetShaderiv glGetShaderiv;
resolveGlGetString glGetString;
// resolveGlGetTexParameterfv glGetTexParameterfv;
// resolveGlGetTexParameteriv glGetTexParameteriv;
resolveGlGetUniformLocation glGetUniformLocation;
// resolveGlGetUniformfv glGetUniformfv;
// resolveGlGetUniformiv glGetUniformiv;
// resolveGlGetVertexAttribPointerv glGetVertexAttribPointerv;
// resolveGlGetVertexAttribfv glGetVertexAttribfv;
// resolveGlGetVertexAttribiv glGetVertexAttribiv;
// resolveGlHint glHint;
// resolveGlIsBuffer glIsBuffer;
// resolveGlIsEnabled glIsEnabled;
// resolveGlIsFramebuffer glIsFramebuffer;
// resolveGlIsProgram glIsProgram;
// resolveGlIsRenderbuffer glIsRenderbuffer;
// resolveGlIsShader glIsShader;
// resolveGlIsTexture glIsTexture;
// resolveGlLineWidth glLineWidth;
resolveGlLinkProgram glLinkProgram;
resolveGlPixelStorei glPixelStorei;
// resolveGlPolygonOffset glPolygonOffset;
// resolveGlReadPixels glReadPixels;
// resolveGlReleaseShaderCompiler glReleaseShaderCompiler;
// resolveGlRenderbufferStorage glRenderbufferStorage;
// resolveGlSampleCoverage glSampleCoverage;
// resolveGlScissor glScissor;
// resolveGlShaderBinary glShaderBinary;
resolveGlShaderSource glShaderSource;
// resolveGlStencilFunc glStencilFunc;
// resolveGlStencilFuncSeparate glStencilFuncSeparate;
// resolveGlStencilMask glStencilMask;
// resolveGlStencilMaskSeparate glStencilMaskSeparate;
// resolveGlStencilOp glStencilOp;
// resolveGlStencilOpSeparate glStencilOpSeparate;
resolveGlTexImage2D glTexImage2D;
// resolveGlTexParameterf glTexParameterf;
// resolveGlTexParameterfv glTexParameterfv;
resolveGlTexParameteri glTexParameteri;
// resolveGlTexParameteriv glTexParameteriv;
resolveGlTexSubImage2D glTexSubImage2D;
resolveGlUniform1f glUniform1f;
// resolveGlUniform1fv glUniform1fv;
resolveGlUniform1i glUniform1i;
// resolveGlUniform1iv glUniform1iv;
// resolveGlUniform2f glUniform2f;
// resolveGlUniform2fv glUniform2fv;
// resolveGlUniform2i glUniform2i;
// resolveGlUniform2iv glUniform2iv;
// resolveGlUniform3f glUniform3f;
// resolveGlUniform3fv glUniform3fv;
// resolveGlUniform3i glUniform3i;
// resolveGlUniform3iv glUniform3iv;
// resolveGlUniform4f glUniform4f;
// resolveGlUniform4fv glUniform4fv;
// resolveGlUniform4i glUniform4i;
// resolveGlUniform4iv glUniform4iv;
// resolveGlUniformMatrix2fv glUniformMatrix2fv;
// resolveGlUniformMatrix3fv glUniformMatrix3fv;
resolveGlUniformMatrix4fv glUniformMatrix4fv;
resolveGlUseProgram glUseProgram;
resolveGlValidateProgram glValidateProgram;
// resolveGlVertexAttrib1f glVertexAttrib1f;
// resolveGlVertexAttrib1fv glVertexAttrib1fv;
// resolveGlVertexAttrib2f glVertexAttrib2f;
// resolveGlVertexAttrib2fv glVertexAttrib2fv;
// resolveGlVertexAttrib3f glVertexAttrib3f;
// resolveGlVertexAttrib3fv glVertexAttrib3fv;
// resolveGlVertexAttrib4f glVertexAttrib4f;
// resolveGlVertexAttrib4fv glVertexAttrib4fv;
resolveGlVertexAttribPointer glVertexAttribPointer;
resolveGlViewport glViewport;
};
typedef struct OpenGlFunctions OpenGlFunctions;
#endif