Skip to content

Commit 715e174

Browse files
authored
Merge pull request #5062 from danilwhale/feat/get-proc-address
[rlgl] Add rlGetProcAddress
2 parents 7262be8 + d6a897e commit 715e174

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/rlgl.h

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,7 @@ RLAPI void rlSetBlendFactorsSeparate(int glSrcRGB, int glDstRGB, int glSrcAlpha,
710710
RLAPI void rlglInit(int width, int height); // Initialize rlgl (buffers, shaders, textures, states)
711711
RLAPI void rlglClose(void); // De-initialize rlgl (buffers, shaders, textures)
712712
RLAPI void rlLoadExtensions(void *loader); // Load OpenGL extensions (loader function required)
713+
RLAPI void *rlGetProcAddress(const char *procName); // Get OpenGL procedure address
713714
RLAPI int rlGetVersion(void); // Get current OpenGL version
714715
RLAPI void rlSetFramebufferWidth(int width); // Set current framebuffer width
715716
RLAPI int rlGetFramebufferWidth(void); // Get default framebuffer width
@@ -1041,10 +1042,15 @@ RLAPI void rlLoadDrawQuad(void); // Load and draw a quad
10411042
// Types and Structures Definition
10421043
//----------------------------------------------------------------------------------
10431044
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
1045+
1046+
typedef void *(*rlglLoadProc)(const char *name); // OpenGL extension functions loader signature (same as GLADloadproc)
1047+
10441048
typedef struct rlglData {
10451049
rlRenderBatch *currentBatch; // Current render batch
10461050
rlRenderBatch defaultBatch; // Default internal render batch
10471051

1052+
rlglLoadProc loader; // OpenGL function loader
1053+
10481054
struct {
10491055
int vertexCounter; // Current active render batch vertex counter (generic, used for all batches)
10501056
float texcoordx, texcoordy; // Current active texture coordinate (added on glVertex*())
@@ -1114,8 +1120,6 @@ typedef struct rlglData {
11141120
} ExtSupported; // Extensions supported flags
11151121
} rlglData;
11161122

1117-
typedef void *(*rlglLoadProc)(const char *name); // OpenGL extension functions loader signature (same as GLADloadproc)
1118-
11191123
#endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2
11201124

11211125
//----------------------------------------------------------------------------------
@@ -2567,6 +2571,8 @@ void rlLoadExtensions(void *loader)
25672571
TRACELOG(RL_LOG_INFO, " > Version: %s", glGetString(GL_VERSION));
25682572
TRACELOG(RL_LOG_INFO, " > GLSL: %s", glGetString(GL_SHADING_LANGUAGE_VERSION));
25692573

2574+
RLGL.loader = (rlglLoadProc)loader;
2575+
25702576
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
25712577
// NOTE: Anisotropy levels capability is an extension
25722578
#ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
@@ -2625,6 +2631,11 @@ void rlLoadExtensions(void *loader)
26252631
#endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2
26262632
}
26272633

2634+
// Get OpenGL procedure address
2635+
void *rlGetProcAddress(const char *procName) {
2636+
return RLGL.loader(procName);
2637+
}
2638+
26282639
// Get current OpenGL version
26292640
int rlGetVersion(void)
26302641
{

0 commit comments

Comments
 (0)