summaryrefslogtreecommitdiffhomepage
path: root/src/rlgl.h
diff options
context:
space:
mode:
authorraysan5 <[email protected]>2021-03-31 16:44:14 +0200
committerraysan5 <[email protected]>2021-03-31 16:44:14 +0200
commit98a2e16d4d0da2aaa4b0cab6edcd1154e47999d4 (patch)
tree17d997a43d0b648b78c21423c5911305f2a0aa1c /src/rlgl.h
parentb5aaf33058df329963c8d7825d58131bebd13647 (diff)
downloadraylib-98a2e16d4d0da2aaa4b0cab6edcd1154e47999d4.tar.gz
raylib-98a2e16d4d0da2aaa4b0cab6edcd1154e47999d4.zip
REVIEWED: RPI instancing checks #1679
Diffstat (limited to 'src/rlgl.h')
-rw-r--r--src/rlgl.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/rlgl.h b/src/rlgl.h
index 5c75eb04..14daca3c 100644
--- a/src/rlgl.h
+++ b/src/rlgl.h
@@ -892,11 +892,15 @@ static PFNGLGENVERTEXARRAYSOESPROC glGenVertexArrays = NULL;
static PFNGLBINDVERTEXARRAYOESPROC glBindVertexArray = NULL;
static PFNGLDELETEVERTEXARRAYSOESPROC glDeleteVertexArrays = NULL;
+// It seems OpenGL ES 2.0 instancing entry points are not defined
+// in Raspberry Pi provided headers (despite being defined in official Khronos GLES2 headers)
+#if !defined(PLATFORM_RPI) && !defined(PLATFORM_DRM)
// NOTE: Instancing functionality could also be available through extension
static PFNGLDRAWARRAYSINSTANCEDEXTPROC glDrawArraysInstanced = NULL;
static PFNGLDRAWELEMENTSINSTANCEDEXTPROC glDrawElementsInstanced = NULL;
static PFNGLVERTEXATTRIBDIVISOREXTPROC glVertexAttribDivisor = NULL;
#endif
+#endif
//----------------------------------------------------------------------------------
// Module specific Functions Declaration
@@ -1722,7 +1726,7 @@ void rlglInit(int width, int height)
}
// Check instanced rendering support
- if (strcmp(extList[i], (const char *)"GL_ANGLE_instanced_arrays") == 0)
+ if (strcmp(extList[i], (const char *)"GL_ANGLE_instanced_arrays") == 0) // Web ANGLE
{
glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)eglGetProcAddress("glDrawArraysInstancedANGLE");
glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)eglGetProcAddress("glDrawElementsInstancedANGLE");
@@ -1730,6 +1734,18 @@ void rlglInit(int width, int height)
if ((glDrawArraysInstanced != NULL) && (glDrawElementsInstanced != NULL) && (glVertexAttribDivisor != NULL)) RLGL.ExtSupported.instancing = true;
}
+ else
+ {
+ if ((strcmp(extList[i], (const char *)"GL_EXT_draw_instanced") == 0) && // Standard EXT
+ (strcmp(extList[i], (const char *)"GL_EXT_instanced_arrays") == 0))
+ {
+ glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)eglGetProcAddress("glDrawArraysInstancedEXT");
+ glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)eglGetProcAddress("glDrawElementsInstancedEXT");
+ glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISOREXTPROC)eglGetProcAddress("glVertexAttribDivisorEXT");
+
+ if ((glDrawArraysInstanced != NULL) && (glDrawElementsInstanced != NULL) && (glVertexAttribDivisor != NULL)) RLGL.ExtSupported.instancing = true;
+ }
+ }
// Check NPOT textures support
// NOTE: Only check on OpenGL ES, OpenGL 3.3 has NPOT textures full support as core feature