allow RLGL to be used for the example that use GLAD

This commit is contained in:
ColleagueRiley 2024-05-07 15:48:38 -04:00
parent 63034f8dae
commit a49fb3b110
2 changed files with 111 additions and 102 deletions

View File

@ -38,8 +38,6 @@
#define GL_SILENCE_DEPRECATION // Silence Opengl API deprecation warnings #define GL_SILENCE_DEPRECATION // Silence Opengl API deprecation warnings
#include <OpenGL/gl3.h> // OpenGL 3 library for OSX #include <OpenGL/gl3.h> // OpenGL 3 library for OSX
#include <OpenGL/gl3ext.h> // OpenGL 3 extensions library for OSX #include <OpenGL/gl3ext.h> // OpenGL 3 extensions library for OSX
#else
#include "glad.h" // Required for: OpenGL functionality
#endif #endif
#define GLSL_VERSION 330 #define GLSL_VERSION 330
#endif #endif

View File

@ -789,19 +789,6 @@ RLAPI void rlSetMatrixViewOffsetStereo(Matrix right, Matrix left); // Set
RLAPI void rlLoadDrawCube(void); // Load and draw a cube RLAPI void rlLoadDrawCube(void); // Load and draw a cube
RLAPI void rlLoadDrawQuad(void); // Load and draw a quad RLAPI void rlLoadDrawQuad(void); // Load and draw a quad
#if defined(__cplusplus)
}
#endif
#endif // RLGL_H
/***********************************************************************************
*
* RLGL IMPLEMENTATION
*
************************************************************************************/
#if defined(RLGL_IMPLEMENTATION)
// Expose OpenGL functions from glad in raylib // Expose OpenGL functions from glad in raylib
#if defined(BUILD_LIBTYPE_SHARED) #if defined(BUILD_LIBTYPE_SHARED)
@ -928,6 +915,7 @@ RLAPI void rlLoadDrawQuad(void); // Load and draw a quad
typedef void (*glCompressedTexImage2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); typedef void (*glCompressedTexImage2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
typedef void (*glFramebufferTexture2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); typedef void (*glFramebufferTexture2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef void (*glUniform1fvPROC) (GLint location, GLsizei count, const GLfloat *value); typedef void (*glUniform1fvPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void (*glUniform1fPROC) (GLint location, const GLfloat value);
typedef void (*glUniform2fvPROC) (GLint location, GLsizei count, const GLfloat *value); typedef void (*glUniform2fvPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void (*glUniform1ivPROC) (GLint location, GLsizei count, const GLint *value); typedef void (*glUniform1ivPROC) (GLint location, GLsizei count, const GLint *value);
typedef void (*glUniform2ivPROC) (GLint location, GLsizei count, const GLint *value); typedef void (*glUniform2ivPROC) (GLint location, GLsizei count, const GLint *value);
@ -935,79 +923,86 @@ RLAPI void rlLoadDrawQuad(void); // Load and draw a quad
typedef void (*glVertexAttrib2fvPROC) (GLuint index, const GLfloat *v); typedef void (*glVertexAttrib2fvPROC) (GLuint index, const GLfloat *v);
typedef const GLubyte* (*glGetStringiPROC) (GLenum name, GLuint index); typedef const GLubyte* (*glGetStringiPROC) (GLenum name, GLuint index);
glShaderSourcePROC glShaderSourceSRC = NULL; #ifndef RLGL_IMPLEMENTATION
glCreateShaderPROC glCreateShaderSRC = NULL; #define RLGL_GL extern
glCompileShaderPROC glCompileShaderSRC = NULL; #else
glCreateProgramPROC glCreateProgramSRC = NULL; #define RLGL_GL
glAttachShaderPROC glAttachShaderSRC = NULL; #endif
glBindAttribLocationPROC glBindAttribLocationSRC = NULL;
glLinkProgramPROC glLinkProgramSRC = NULL; RLGL_GL glShaderSourcePROC glShaderSourceSRC;
glBindBufferPROC glBindBufferSRC = NULL; RLGL_GL glCreateShaderPROC glCreateShaderSRC;
glBufferDataPROC glBufferDataSRC = NULL; RLGL_GL glCompileShaderPROC glCompileShaderSRC;
glEnableVertexAttribArrayPROC glEnableVertexAttribArraySRC = NULL; RLGL_GL glCreateProgramPROC glCreateProgramSRC;
glVertexAttribPointerPROC glVertexAttribPointerSRC = NULL; RLGL_GL glAttachShaderPROC glAttachShaderSRC;
glDisableVertexAttribArrayPROC glDisableVertexAttribArraySRC = NULL; RLGL_GL glBindAttribLocationPROC glBindAttribLocationSRC;
glDeleteBuffersPROC glDeleteBuffersSRC = NULL; RLGL_GL glLinkProgramPROC glLinkProgramSRC;
glUseProgramPROC glUseProgramSRC = NULL; RLGL_GL glBindBufferPROC glBindBufferSRC;
glDetachShaderPROC glDetachShaderSRC = NULL; RLGL_GL glBufferDataPROC glBufferDataSRC;
glDeleteShaderPROC glDeleteShaderSRC = NULL; RLGL_GL glEnableVertexAttribArrayPROC glEnableVertexAttribArraySRC;
glDeleteProgramPROC glDeleteProgramSRC = NULL; RLGL_GL glVertexAttribPointerPROC glVertexAttribPointerSRC;
glBufferSubDataPROC glBufferSubDataSRC = NULL; RLGL_GL glDisableVertexAttribArrayPROC glDisableVertexAttribArraySRC;
glGetShaderivPROC glGetShaderivSRC = NULL; RLGL_GL glDeleteBuffersPROC glDeleteBuffersSRC;
glGetShaderInfoLogPROC glGetShaderInfoLogSRC = NULL; RLGL_GL glUseProgramPROC glUseProgramSRC;
glGetProgramivPROC glGetProgramivSRC = NULL; RLGL_GL glDetachShaderPROC glDetachShaderSRC;
glGetProgramInfoLogPROC glGetProgramInfoLogSRC = NULL; RLGL_GL glDeleteShaderPROC glDeleteShaderSRC;
glGenBuffersPROC glGenBuffersSRC = NULL; RLGL_GL glDeleteProgramPROC glDeleteProgramSRC;
glGetUniformLocationPROC glGetUniformLocationSRC = NULL; RLGL_GL glBufferSubDataPROC glBufferSubDataSRC;
glUniformMatrix4fvPROC glUniformMatrix4fvSRC = NULL; RLGL_GL glGetShaderivPROC glGetShaderivSRC;
glActiveTexturePROC glActiveTextureSRC = NULL; RLGL_GL glGetShaderInfoLogPROC glGetShaderInfoLogSRC;
glGenVertexArraysPROC glGenVertexArraysSRC = NULL; RLGL_GL glGetProgramivPROC glGetProgramivSRC;
glBindVertexArrayPROC glBindVertexArraySRC = NULL; RLGL_GL glGetProgramInfoLogPROC glGetProgramInfoLogSRC;
glDeleteVertexArraysPROC glDeleteVertexArraysSRC = NULL; RLGL_GL glGenBuffersPROC glGenBuffersSRC;
glBindFramebufferPROC glBindFramebufferSRC = NULL; RLGL_GL glGetUniformLocationPROC glGetUniformLocationSRC;
glBlitFramebufferPROC glBlitFramebufferSRC = NULL; RLGL_GL glUniformMatrix4fvPROC glUniformMatrix4fvSRC;
glDrawBuffersPROC glDrawBuffersSRC = NULL; RLGL_GL glActiveTexturePROC glActiveTextureSRC;
glBlendEquationPROC glBlendEquationSRC = NULL; RLGL_GL glGenVertexArraysPROC glGenVertexArraysSRC;
glBlendFuncSeparatePROC glBlendFuncSeparateSRC = NULL; RLGL_GL glBindVertexArrayPROC glBindVertexArraySRC;
glBlendEquationSeparatePROC glBlendEquationSeparateSRC = NULL; RLGL_GL glDeleteVertexArraysPROC glDeleteVertexArraysSRC;
glUniform4fPROC glUniform4fSRC = NULL; RLGL_GL glBindFramebufferPROC glBindFramebufferSRC;
glUniformiPROC glUniformiSRC = NULL; RLGL_GL glBlitFramebufferPROC glBlitFramebufferSRC;
glCompressedTexImageDPROC glCompressedTexImageDSRC = NULL; RLGL_GL glDrawBuffersPROC glDrawBuffersSRC;
glLoadTextureDepthPROC glLoadTextureDepthSRC = NULL; RLGL_GL glBlendEquationPROC glBlendEquationSRC;
glGenRenderbuffersPROC glGenRenderbuffersSRC = NULL; RLGL_GL glBlendFuncSeparatePROC glBlendFuncSeparateSRC;
glBindRenderbufferPROC glBindRenderbufferSRC = NULL; RLGL_GL glBlendEquationSeparatePROC glBlendEquationSeparateSRC;
glRenderbufferStoragePROC glRenderbufferStorageSRC = NULL; RLGL_GL glUniform4fPROC glUniform4fSRC;
glGenerateMipmapPROC glGenerateMipmapSRC = NULL; RLGL_GL glUniformiPROC glUniformiSRC;
glGenFramebuffersPROC glGenFramebuffersSRC = NULL; RLGL_GL glCompressedTexImageDPROC glCompressedTexImageDSRC;
glFramebufferTextureDPROC glFramebufferTextureDSRC = NULL; RLGL_GL glLoadTextureDepthPROC glLoadTextureDepthSRC;
glFramebufferRenderbufferPROC glFramebufferRenderbufferSRC = NULL; RLGL_GL glGenRenderbuffersPROC glGenRenderbuffersSRC;
glCheckFramebufferStatusPROC glCheckFramebufferStatusSRC = NULL; RLGL_GL glBindRenderbufferPROC glBindRenderbufferSRC;
glGetFramebufferAttachmentParameterivPROC glGetFramebufferAttachmentParameterivSRC = NULL; RLGL_GL glRenderbufferStoragePROC glRenderbufferStorageSRC;
glDeleteRenderbuffersPROC glDeleteRenderbuffersSRC = NULL; RLGL_GL glGenerateMipmapPROC glGenerateMipmapSRC;
glDeleteFramebuffersPROC glDeleteFramebuffersSRC = NULL; RLGL_GL glGenFramebuffersPROC glGenFramebuffersSRC;
glDrawArraysInstancedPROC glDrawArraysInstancedSRC = NULL; RLGL_GL glFramebufferTextureDPROC glFramebufferTextureDSRC;
glDrawElementsInstancedPROC glDrawElementsInstancedSRC = NULL; RLGL_GL glFramebufferRenderbufferPROC glFramebufferRenderbufferSRC;
glVertexAttribDivisorPROC glVertexAttribDivisorSRC = NULL; RLGL_GL glCheckFramebufferStatusPROC glCheckFramebufferStatusSRC;
glGetAttribLocationPROC glGetAttribLocationSRC = NULL; RLGL_GL glGetFramebufferAttachmentParameterivPROC glGetFramebufferAttachmentParameterivSRC;
glUniformfvPROC glUniformfvSRC = NULL; RLGL_GL glDeleteRenderbuffersPROC glDeleteRenderbuffersSRC;
glUniform3fvPROC glUniform3fvSRC = NULL; RLGL_GL glDeleteFramebuffersPROC glDeleteFramebuffersSRC;
glUniform4fvPROC glUniform4fvSRC = NULL; RLGL_GL glDrawArraysInstancedPROC glDrawArraysInstancedSRC;
glUniformivPROC glUniformivSRC = NULL; RLGL_GL glDrawElementsInstancedPROC glDrawElementsInstancedSRC;
glUniform3ivPROC glUniform3ivSRC = NULL; RLGL_GL glVertexAttribDivisorPROC glVertexAttribDivisorSRC;
glUniform4ivPROC glUniform4ivSRC = NULL; RLGL_GL glGetAttribLocationPROC glGetAttribLocationSRC;
glVertexAttribfvPROC glVertexAttribfvSRC = NULL; RLGL_GL glUniformfvPROC glUniformfvSRC;
glVertexAttrib3fvPROC glVertexAttrib3fvSRC = NULL; RLGL_GL glUniform3fvPROC glUniform3fvSRC;
glVertexAttrib4fvPROC glVertexAttrib4fvSRC = NULL; RLGL_GL glUniform4fvPROC glUniform4fvSRC;
glUniform1iPROC glUniform1iSRC = NULL; RLGL_GL glUniformivPROC glUniformivSRC;
glCompressedTexImage2DPROC glCompressedTexImage2DSRC = NULL; RLGL_GL glUniform3ivPROC glUniform3ivSRC;
glFramebufferTexture2DPROC glFramebufferTexture2DSRC = NULL; RLGL_GL glUniform4ivPROC glUniform4ivSRC;
glUniform1fvPROC glUniform1fvSRC = NULL; RLGL_GL glVertexAttribfvPROC glVertexAttribfvSRC;
glUniform2fvPROC glUniform2fvSRC = NULL; RLGL_GL glVertexAttrib3fvPROC glVertexAttrib3fvSRC;
glUniform1ivPROC glUniform1ivSRC = NULL; RLGL_GL glVertexAttrib4fvPROC glVertexAttrib4fvSRC;
glUniform2ivPROC glUniform2ivSRC = NULL; RLGL_GL glUniform1iPROC glUniform1iSRC;
glVertexAttrib1fvPROC glVertexAttrib1fvSRC = NULL; RLGL_GL glCompressedTexImage2DPROC glCompressedTexImage2DSRC;
glVertexAttrib2fvPROC glVertexAttrib2fvSRC = NULL; RLGL_GL glFramebufferTexture2DPROC glFramebufferTexture2DSRC;
glGetStringiPROC glGetStringiSRC = NULL; RLGL_GL glUniform1fvPROC glUniform1fvSRC;
RLGL_GL glUniform1fPROC glUniform1fSRC;
RLGL_GL glUniform2fvPROC glUniform2fvSRC;
RLGL_GL glUniform1ivPROC glUniform1ivSRC;
RLGL_GL glUniform2ivPROC glUniform2ivSRC;
RLGL_GL glVertexAttrib1fvPROC glVertexAttrib1fvSRC;
RLGL_GL glVertexAttrib2fvPROC glVertexAttrib2fvSRC;
RLGL_GL glGetStringiPROC glGetStringiSRC;
#define glActiveTexture glActiveTextureSRC #define glActiveTexture glActiveTextureSRC
#define glShaderSource glShaderSourceSRC #define glShaderSource glShaderSourceSRC
@ -1076,6 +1071,7 @@ RLAPI void rlLoadDrawQuad(void); // Load and draw a quad
#define glCompressedTexImage2D glCompressedTexImage2DSRC #define glCompressedTexImage2D glCompressedTexImage2DSRC
#define glFramebufferTexture2D glFramebufferTexture2DSRC #define glFramebufferTexture2D glFramebufferTexture2DSRC
#define glUniform1fv glUniform1fvSRC #define glUniform1fv glUniform1fvSRC
#define glUniform1f glUniform1fSRC
#define glUniform2fv glUniform2fvSRC #define glUniform2fv glUniform2fvSRC
#define glUniform1iv glUniform1ivSRC #define glUniform1iv glUniform1ivSRC
#define glUniform2iv glUniform2ivSRC #define glUniform2iv glUniform2ivSRC
@ -1083,30 +1079,44 @@ RLAPI void rlLoadDrawQuad(void); // Load and draw a quad
#define glVertexAttrib2fv glVertexAttrib2fvSRC #define glVertexAttrib2fv glVertexAttrib2fvSRC
#define glGetStringi glGetStringiSRC #define glGetStringi glGetStringiSRC
int RLGL_GL_ARB_vertex_array_object = 0; RLGL_GL int RLGL_GL_ARB_vertex_array_object;
int RLGL_GL_EXT_draw_instanced = 0; RLGL_GL int RLGL_GL_EXT_draw_instanced;
int RLGL_GL_ARB_instanced_arrays = 0; RLGL_GL int RLGL_GL_ARB_instanced_arrays;
int RLGL_GL_ARB_texture_non_power_of_two = 0; RLGL_GL int RLGL_GL_ARB_texture_non_power_of_two;
int RLGL_GL_ARB_texture_float = 0; RLGL_GL int RLGL_GL_ARB_texture_float;
int RLGL_GL_ARB_depth_texture = 0; RLGL_GL int RLGL_GL_ARB_depth_texture;
int RLGL_GL_EXT_texture_filter_anisotropic = 0; RLGL_GL int RLGL_GL_EXT_texture_filter_anisotropic;
int RLGL_GL_EXT_texture_mirror_clamp = 0; RLGL_GL int RLGL_GL_EXT_texture_mirror_clamp;
int RLGL_GL_KHR_texture_compression_astc_hdr = 0; RLGL_GL int RLGL_GL_KHR_texture_compression_astc_hdr;
int RLGL_GL_KHR_texture_compression_astc_ldr = 0; RLGL_GL int RLGL_GL_KHR_texture_compression_astc_ldr;
int RLGL_GL_EXT_texture_compression_s3tc = 0; // Texture compression: DXT RLGL_GL int RLGL_GL_EXT_texture_compression_s3tc; // Texture compression: DXT
int RLGL_GL_ARB_ES3_compatibility = 0; // Texture compression: ETC2/EAC RLGL_GL int RLGL_GL_ARB_ES3_compatibility; // Texture compression: ETC2/EAC
#if defined(GRAPHICS_API_OPENGL_43) #if defined(GRAPHICS_API_OPENGL_43)
int RLGL_GL_ARB_compute_shader = 0; RLGL_GL int RLGL_GL_ARB_compute_shader;
int RLGL_GL_ARB_shader_storage_buffer_object = 0; RLGL_GL int RLGL_GL_ARB_shader_storage_buffer_object;
#endif #endif
int rlLoadGL(RLGLloadfunc proc); int rlLoadGL(RLGLloadfunc proc);
#endif #endif
#if defined(__cplusplus)
}
#endif
#endif // RLGL_H
/***********************************************************************************
*
* RLGL IMPLEMENTATION
*
************************************************************************************/
#if defined(RLGL_IMPLEMENTATION)
#if defined(GRAPHICS_API_OPENGL_ES3) #if defined(GRAPHICS_API_OPENGL_ES3)
#include <GLES3/gl3.h> // OpenGL ES 3.0 library #include <GLES3/gl3.h> // OpenGL ES 3.0 library
#define GL_GLEXT_PROTOTYPES #define GL_GLEXT_PROTOTYPES
@ -5586,6 +5596,7 @@ int rlLoadGL(RLGLloadfunc proc) {
RLGL_PROC_DEF(proc, glCompressedTexImage2D); RLGL_PROC_DEF(proc, glCompressedTexImage2D);
RLGL_PROC_DEF(proc, glFramebufferTexture2D); RLGL_PROC_DEF(proc, glFramebufferTexture2D);
RLGL_PROC_DEF(proc, glUniform1fv); RLGL_PROC_DEF(proc, glUniform1fv);
RLGL_PROC_DEF(proc, glUniform1f);
RLGL_PROC_DEF(proc, glUniform2fv); RLGL_PROC_DEF(proc, glUniform2fv);
RLGL_PROC_DEF(proc, glUniform1iv); RLGL_PROC_DEF(proc, glUniform1iv);
RLGL_PROC_DEF(proc, glUniform2iv); RLGL_PROC_DEF(proc, glUniform2iv);