diff --git a/auto/bin/make_init.pl b/auto/bin/make_init.pl index 5e6200a..f437018 100755 --- a/auto/bin/make_init.pl +++ b/auto/bin/make_init.pl @@ -46,6 +46,7 @@ if (@ARGV) print "#ifdef $extname\n\n"; print "static GLboolean _glewInit_$extname (" . $type . "EW_CONTEXT_ARG_DEF_INIT)\n{\n GLboolean r = GL_FALSE;\n"; + print "#ifdef GLEW_MX\n (void)ctx;\n#endif\n (void)context_profile;\n (void)context_flags;\n"; output_decls($functions, \&make_pfn_def_init); print "\n return r;\n}\n\n"; print "#endif /* $extname */\n\n"; diff --git a/auto/src/glew_head.c b/auto/src/glew_head.c index 7d119c4..cb2dfe7 100644 --- a/auto/src/glew_head.c +++ b/auto/src/glew_head.c @@ -15,26 +15,26 @@ extern int memcmp(const void *, const void *, size_t); #ifdef GLEW_MX # define glewGetContext() ctx # ifdef _WIN32 -# define GLEW_CONTEXT_ARG_DEF_INIT GLEWContext* ctx -# define GLEW_CONTEXT_ARG_VAR_INIT ctx +# define GLEW_CONTEXT_ARG_DEF_INIT GLEWContext* ctx, GLint context_profile, GLint context_flags +# define GLEW_CONTEXT_ARG_VAR_INIT ctx, context_profile, context_flags # define wglewGetContext() ctx -# define WGLEW_CONTEXT_ARG_DEF_INIT WGLEWContext* ctx +# define WGLEW_CONTEXT_ARG_DEF_INIT WGLEWContext* ctx, GLint context_profile, GLint context_flags # define WGLEW_CONTEXT_ARG_DEF_LIST WGLEWContext* ctx # else /* _WIN32 */ -# define GLEW_CONTEXT_ARG_DEF_INIT void -# define GLEW_CONTEXT_ARG_VAR_INIT +# define GLEW_CONTEXT_ARG_DEF_INIT GLEWContext *ctx, GLint context_profile, GLint context_flags +# define GLEW_CONTEXT_ARG_VAR_INIT ctx, context_profile, context_flags # define glxewGetContext() ctx -# define GLXEW_CONTEXT_ARG_DEF_INIT void +# define GLXEW_CONTEXT_ARG_DEF_INIT GLXEWContext* ctx, GLint context_profile, GLint context_flags # define GLXEW_CONTEXT_ARG_DEF_LIST GLXEWContext* ctx # endif /* _WIN32 */ # define GLEW_CONTEXT_ARG_DEF_LIST GLEWContext* ctx #else /* GLEW_MX */ -# define GLEW_CONTEXT_ARG_DEF_INIT void -# define GLEW_CONTEXT_ARG_VAR_INIT +# define GLEW_CONTEXT_ARG_DEF_INIT GLint context_profile, GLint context_flags +# define GLEW_CONTEXT_ARG_VAR_INIT context_profile, context_flags # define GLEW_CONTEXT_ARG_DEF_LIST void -# define WGLEW_CONTEXT_ARG_DEF_INIT void +# define WGLEW_CONTEXT_ARG_DEF_INIT GLint context_profile, GLint context_flags # define WGLEW_CONTEXT_ARG_DEF_LIST void -# define GLXEW_CONTEXT_ARG_DEF_INIT void +# define GLXEW_CONTEXT_ARG_DEF_INIT GLint context_profile, GLint context_flags # define GLXEW_CONTEXT_ARG_DEF_LIST void #endif /* GLEW_MX */ diff --git a/auto/src/glew_init_gl.c b/auto/src/glew_init_gl.c index 65080c9..121a8c9 100644 --- a/auto/src/glew_init_gl.c +++ b/auto/src/glew_init_gl.c @@ -65,6 +65,8 @@ GLenum GLEWAPIENTRY glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST) const GLubyte* extStart; const GLubyte* extEnd; GLint numExts, ext; + GLint context_flags = 0; + GLint context_profile = GL_CONTEXT_COMPATIBILITY_PROFILE_BIT; /* query opengl version */ if (!glewGetVersion(&major, &minor)) @@ -96,4 +98,11 @@ GLenum GLEWAPIENTRY glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST) GLEW_VERSION_1_1 = GLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE; } + if( GLEW_VERSION_3_0 ) + glGetIntegerv(GL_CONTEXT_FLAGS, &context_flags); + if( GLEW_VERSION_3_2 ) + glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &context_profile); + else if( GLEW_VERSION_3_1 && !glewGetExtension("GL_ARB_compatibility")) + context_profile = GL_CONTEXT_CORE_PROFILE_BIT; + /* initialize core functions */ diff --git a/auto/src/glew_init_glx.c b/auto/src/glew_init_glx.c index 6b4d7b7..93f7045 100644 --- a/auto/src/glew_init_glx.c +++ b/auto/src/glew_init_glx.c @@ -21,6 +21,8 @@ GLenum glxewInit (GLXEW_CONTEXT_ARG_DEF_LIST) int major, minor; const GLubyte* extStart; const GLubyte* extEnd; + GLint context_profile = 0, context_flags = 0; + /* initialize core GLX 1.2 */ if (_glewInit_GLX_VERSION_1_2(GLEW_CONTEXT_ARG_VAR_INIT)) return GLEW_ERROR_GLX_VERSION_11_ONLY; /* initialize flags */ diff --git a/auto/src/glew_init_wgl.c b/auto/src/glew_init_wgl.c index f8c5116..fa8f1a0 100644 --- a/auto/src/glew_init_wgl.c +++ b/auto/src/glew_init_wgl.c @@ -29,6 +29,8 @@ GLenum GLEWAPIENTRY wglewInit (WGLEW_CONTEXT_ARG_DEF_LIST) GLboolean crippled; const GLubyte* extStart; const GLubyte* extEnd; + GLint context_profile = 0, context_flags = 0; + /* find wgl extension string query functions */ _wglewGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringARB"); _wglewGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringEXT");