diff --git a/README.md b/README.md index 79e883034..01e98689d 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ features - **NO external dependencies**, all required libraries are [bundled into raylib](https://github.com/raysan5/raylib/tree/master/src/external) - Multiple platforms supported: **Windows, Linux, MacOS, RPI, Android, HTML5... and more!** - Written in plain C code (C99) using PascalCase/camelCase notation - - Hardware accelerated with OpenGL (**1.1, 2.1, 3.3, 4.3, ES 2.0, ES 3.0**) + - Hardware accelerated with OpenGL (**1.1, 2.1, 3.3, 4.3, 4.6, ES 2.0, ES 3.0**) - **Unique OpenGL abstraction layer** (usable as standalone module): [rlgl](https://github.com/raysan5/raylib/blob/master/src/rlgl.h) - Multiple **Fonts** formats supported (TTF, OTF, Image fonts, AngelCode fonts) - Multiple texture formats supported, including **compressed formats** (DXT, ETC, ASTC) diff --git a/src/platforms/rcore_desktop.c b/src/platforms/rcore_desktop.c index f08774165..b9864bff7 100644 --- a/src/platforms/rcore_desktop.c +++ b/src/platforms/rcore_desktop.c @@ -1348,6 +1348,19 @@ int InitPlatform(void) glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_FALSE); #if defined(RLGL_ENABLE_OPENGL_DEBUG_CONTEXT) glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GLFW_TRUE); // Enable OpenGL Debug Context +#endif + } + else if (rlGetVersion() == RL_OPENGL_46) + { + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); // Choose OpenGL major version (just hint) + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6); // Choose OpenGL minor version (just hint) + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_FALSE); +#if defined(RLGL_ENABLE_OPENGL_DEBUG_CONTEXT) + glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GLFW_TRUE); // Enable OpenGL Debug Context +#endif +#if defined(RLGL_ENABLE_NOERROR_CONTEXT) + glfwWindowHint(GLFW_CONTEXT_NO_ERROR, GLFW_TRUE); #endif } else if (rlGetVersion() == RL_OPENGL_ES_20) // Request OpenGL ES 2.0 context diff --git a/src/rlgl.h b/src/rlgl.h index bef7eaf18..deb923448 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -25,6 +25,7 @@ * #define GRAPHICS_API_OPENGL_21 * #define GRAPHICS_API_OPENGL_33 * #define GRAPHICS_API_OPENGL_43 +* #define GRAPHICS_API_OPENGL_46 * #define GRAPHICS_API_OPENGL_ES2 * #define GRAPHICS_API_OPENGL_ES3 * Use selected OpenGL graphics backend, should be supported by platform @@ -150,6 +151,7 @@ !defined(GRAPHICS_API_OPENGL_21) && \ !defined(GRAPHICS_API_OPENGL_33) && \ !defined(GRAPHICS_API_OPENGL_43) && \ + !defined(GRAPHICS_API_OPENGL_46) && \ !defined(GRAPHICS_API_OPENGL_ES2) && \ !defined(GRAPHICS_API_OPENGL_ES3) #define GRAPHICS_API_OPENGL_33 @@ -166,6 +168,9 @@ #if defined(GRAPHICS_API_OPENGL_43) #undef GRAPHICS_API_OPENGL_43 #endif + #if defined(GRAPHICS_API_OPENGL_46) + #undef GRAPHICS_API_OPENGL_46 + #endif #if defined(GRAPHICS_API_OPENGL_ES2) #undef GRAPHICS_API_OPENGL_ES2 #endif @@ -182,6 +187,11 @@ #define GRAPHICS_API_OPENGL_33 #endif +// OpenGL 4.6 uses OpenGL 3.3 Core functionality +#if defined(GRAPHICS_API_OPENGL_46) + #define GRAPHICS_API_OPENGL_33 +#endif + // OpenGL ES 3.0 uses OpenGL ES 2.0 functionality (and more) #if defined(GRAPHICS_API_OPENGL_ES3) #define GRAPHICS_API_OPENGL_ES2 @@ -414,6 +424,7 @@ typedef enum { RL_OPENGL_21, // OpenGL 2.1 (GLSL 120) RL_OPENGL_33, // OpenGL 3.3 (GLSL 330) RL_OPENGL_43, // OpenGL 4.3 (using GLSL 330) + RL_OPENGL_46, // OpenGL 4.6 (using GLSL 330) RL_OPENGL_ES_20, // OpenGL ES 2.0 (GLSL 100) RL_OPENGL_ES_30 // OpenGL ES 3.0 (GLSL 300 es) } rlGlVersion; @@ -2589,6 +2600,8 @@ int rlGetVersion(void) glVersion = RL_OPENGL_43; #elif defined(GRAPHICS_API_OPENGL_33) glVersion = RL_OPENGL_33; +#elif defined(GRAPHICS_API_OPENGL_46) + glVersion = RL_OPENGL_46; #endif #if defined(GRAPHICS_API_OPENGL_ES3) glVersion = RL_OPENGL_ES_30;