aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorraysan5 <raysan5@gmail.com>2016-01-21 12:24:35 +0100
committerraysan5 <raysan5@gmail.com>2016-01-21 12:24:35 +0100
commit23d66e9b6f4ae26cded37878da37aabcb29e48ad (patch)
tree2b5bd4a8cba166217b3db2bab2aa07861fccdbc9 /src
parent882e2abee126cf23619cc46a1adb1fa89e072378 (diff)
downloadraylib-23d66e9b6f4ae26cded37878da37aabcb29e48ad.tar.gz
raylib-23d66e9b6f4ae26cded37878da37aabcb29e48ad.zip
Move extensions loading to core module
Diffstat (limited to 'src')
-rw-r--r--src/core.c39
-rw-r--r--src/rlgl.c61
2 files changed, 44 insertions, 56 deletions
diff --git a/src/core.c b/src/core.c
index f55dba50..6e59e57b 100644
--- a/src/core.c
+++ b/src/core.c
@@ -54,8 +54,13 @@
#include <errno.h> // Macros for reporting and retrieving error conditions through error codes
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
+ #define GLEW_STATIC
+ #include <GL/glew.h> // GLEW extensions loading lib
+ //#include "glad.h" // GLAD library: Manage OpenGL headers and extensions
+
//#define GLFW_INCLUDE_NONE // Disable the standard OpenGL header inclusion on GLFW3
#include <GLFW/glfw3.h> // GLFW3 library: Windows, OpenGL context and Input management
+
#ifdef __linux
#define GLFW_EXPOSE_NATIVE_X11 // Linux specific definitions for getting
#define GLFW_EXPOSE_NATIVE_GLX // native functions like glfwGetX11Window
@@ -1378,6 +1383,40 @@ static void InitDisplay(int width, int height)
glfwMakeContextCurrent(window);
+ // Extensions initialization for OpenGL 3.3
+ if (rlGetVersion() == OPENGL_33)
+ {
+ #define GLEW_EXTENSIONS_LOADER
+ #if defined(GLEW_EXTENSIONS_LOADER)
+ // Initialize extensions using GLEW
+ glewExperimental = 1; // Needed for core profile
+ GLenum error = glewInit();
+
+ if (error != GLEW_OK) TraceLog(ERROR, "Failed to initialize GLEW - Error Code: %s\n", glewGetErrorString(error));
+
+ if (glewIsSupported("GL_VERSION_3_3")) TraceLog(INFO, "OpenGL 3.3 Core profile supported");
+ else TraceLog(ERROR, "OpenGL 3.3 Core profile not supported");
+
+ // With GLEW, we can check if an extension has been loaded in two ways:
+ //if (GLEW_ARB_vertex_array_object) { }
+ //if (glewIsSupported("GL_ARB_vertex_array_object")) { }
+
+ // NOTE: GLEW is a big library that loads ALL extensions, we can use some alternative to load only required ones
+ // Alternatives: glLoadGen, glad, libepoxy
+
+ #elif defined(GLAD_EXTENSIONS_LOADER)
+ // NOTE: glad is generated and contains only required OpenGL version and Core extensions
+ //if (!gladLoadGL()) TraceLog(ERROR, "Failed to initialize glad\n");
+ if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) TraceLog(ERROR, "Failed to initialize glad\n"); // No GLFW3 in this module...
+
+ if (GLAD_GL_VERSION_3_3) TraceLog(INFO, "OpenGL 3.3 Core profile supported");
+ else TraceLog(ERROR, "OpenGL 3.3 Core profile not supported");
+
+ // With GLAD, we can check if an extension is supported using the GLAD_GL_xxx booleans
+ //if (GLAD_GL_ARB_vertex_array_object) // Use GL_ARB_vertex_array_object
+ #endif
+ }
+
// Enables GPU v-sync, so frames are not limited to screen refresh rate (60Hz -> 60 FPS)
// If not set, swap interval uses GPU v-sync configuration
// Framerate can be setup using SetTargetFPS()
diff --git a/src/rlgl.c b/src/rlgl.c
index dbcbc35f..35aa5a5f 100644
--- a/src/rlgl.c
+++ b/src/rlgl.c
@@ -43,13 +43,11 @@
#endif
#if defined(GRAPHICS_API_OPENGL_33)
- #define GLEW_STATIC
#ifdef __APPLE__ // OpenGL include for OSX
#include <OpenGL/gl3.h>
#else
- #include <GL/glew.h> // GLEW extensions loading lib
- //#include "glad.h" // glad extensions loading lib: ERRORS: windows.h
- //#include "gl_core_3_3.h" // glLoadGen extension loading lib: ERRORS: windows.h
+ #include <GL/glew.h> // GLEW header, includes OpenGL headers
+ //#include "glad.h" // glad header, includes OpenGL headers
#endif
#endif
@@ -896,59 +894,10 @@ void rlglInit(void)
#if defined(GRAPHICS_API_OPENGL_33)
-#define GLEW_EXTENSIONS_LOADER
-#if defined(GLEW_EXTENSIONS_LOADER)
- // Initialize extensions using GLEW
- glewExperimental = 1; // Needed for core profile
- GLenum error = glewInit();
-
- if (error != GLEW_OK) TraceLog(ERROR, "Failed to initialize GLEW - Error Code: %s\n", glewGetErrorString(error));
-
- if (glewIsSupported("GL_VERSION_3_3"))
- {
- TraceLog(INFO, "OpenGL 3.3 Core profile supported");
-
- vaoSupported = true;
- npotSupported = true;
- }
- else TraceLog(ERROR, "OpenGL 3.3 Core profile not supported");
-
- // With GLEW, we can check if an extension has been loaded in two ways:
- //if (GLEW_ARB_vertex_array_object) { }
- //if (glewIsSupported("GL_ARB_vertex_array_object")) { }
-
- // NOTE: GLEW is a big library that loads ALL extensions, we can use some alternative to load only required ones
- // Alternatives: glLoadGen, glad, libepoxy
-
-#elif defined(GLAD_EXTENSIONS_LOADER)
- // NOTE: glad is generated and contains only required OpenGL version and core extensions
- //if (!gladLoadGL()) TraceLog(ERROR, "Failed to initialize glad\n");
- if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) TraceLog(ERROR, "Failed to initialize glad\n"); // No GLFW3 in this module...
-
- if (GLAD_GL_VERSION_3_3)
- {
- TraceLog(INFO, "OpenGL 3.3 Core profile supported");
-
- vaoSupported = true;
- npotSupported = true;
- }
- else TraceLog(ERROR, "OpenGL 3.3 Core profile not supported");
-
- // With GLAD, we can check if an extension is supported using the GLAD_GL_xxx booleans
- //if (GLAD_GL_ARB_vertex_array_object) // Use GL_ARB_vertex_array_object
+ // NOTE: On OpenGL 3.3 VAO and NPOT are supported by default
+ vaoSupported = true;
+ npotSupported = true;
-#elif defined(GLLOADGEN_EXTENSIONS_LOADER)
- // NOTE: glLoadGen already generates a header with required OpenGL version and core extensions
- if (ogl_LoadFunctions() != ogl_LOAD_FAILED)
- {
- TraceLog(INFO, "OpenGL 3.3 Core profile supported");
-
- vaoSupported = true;
- npotSupported = true;
- }
- else TraceLog(ERROR, "OpenGL 3.3 Core profile not supported");
-#endif
-
// NOTE: We don't need to check again supported extensions but we do (in case GLEW is replaced sometime)
// We get a list of available extensions and we check for some of them (compressed textures)
glGetIntegerv(GL_NUM_EXTENSIONS, &numExt);