#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlUniform1uiv)\r
pGlUniform1uiv(loc, count, v);\r
-#else\r
+#elif defined(GL_VERSION_3_0)\r
glUniform1uiv(loc, count, v);\r
#endif\r
}\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlUniform2uiv)\r
pGlUniform2uiv(loc, count, v);\r
-#else\r
+#elif defined(GL_VERSION_3_0)\r
glUniform2uiv(loc, count, v);\r
#endif\r
}\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlUniform3uiv)\r
pGlUniform3uiv(loc, count, v);\r
-#else\r
+#elif defined(GL_VERSION_3_0)\r
glUniform3uiv(loc, count, v);\r
#endif\r
}\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlUniform4uiv)\r
pGlUniform4uiv(loc, count, v);\r
-#else\r
+#elif defined(GL_VERSION_3_0)\r
glUniform4uiv(loc, count, v);\r
#endif\r
}\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlTextureSubImage2D)\r
pGlTextureSubImage2D(texture, level, xoffset, yoffset,width, height,format, type, pixels);\r
-#else\r
+#elif defined(GL_VERSION_4_5)\r
glTextureSubImage2D(texture, level, xoffset, yoffset,width, height,format, type, pixels);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlTextureSubImage2DEXT)\r
pGlTextureSubImage2DEXT(texture, target, level, xoffset, yoffset,width, height,format, type, pixels);\r
-#else\r
+#elif defined(GL_EXT_direct_state_access)\r
glTextureSubImage2DEXT(texture, target, level, xoffset, yoffset,width, height,format, type, pixels);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
GLint bound;\r
switch (target)\r
{\r
+#ifdef GL_VERSION_3_0\r
case GL_TEXTURE_1D_ARRAY:\r
glGetIntegerv(GL_TEXTURE_BINDING_1D_ARRAY, &bound);\r
break;\r
+#elif GL_EXT_texture_array\r
+ case GL_TEXTURE_1D_ARRAY_EXT:\r
+ glGetIntegerv(GL_TEXTURE_BINDING_1D_ARRAY_EXT, &bound);\r
+ break;\r
+#endif\r
case GL_TEXTURE_2D:\r
glGetIntegerv(GL_TEXTURE_BINDING_2D, &bound);\r
break;\r
+#ifdef GL_VERSION_3_2\r
case GL_TEXTURE_2D_MULTISAMPLE:\r
glGetIntegerv(GL_TEXTURE_BINDING_2D_MULTISAMPLE, &bound);\r
break;\r
+#endif\r
case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:\r
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:\r
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlTextureStorage2D)\r
pGlTextureStorage2D(texture,levels,internalformat,width,height);\r
-#else\r
+#elif defined(GL_VERSION_4_5)\r
glTextureStorage2D(texture,levels,internalformat,width,height);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlTextureStorage2DEXT)\r
pGlTextureStorage2DEXT(texture,target,levels,internalformat,width,height);\r
-#else\r
+#elif defined(GL_EXT_direct_state_access)\r
glTextureStorage2DEXT(texture,target,levels,internalformat,width,height);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
-#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
- else if (pGlTexStorage2D)\r
-#else\r
+\r
+#if defined(GL_VERSION_4_2) || defined(_IRR_OPENGL_USE_EXTPOINTER_)\r
else\r
+#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
+ if (pGlTexStorage2D)\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
{\r
GLint bound;\r
switch (target)\r
{\r
+#ifdef GL_VERSION_3_0\r
case GL_TEXTURE_1D_ARRAY:\r
glGetIntegerv(GL_TEXTURE_BINDING_1D_ARRAY, &bound);\r
break;\r
+#elif GL_EXT_texture_array\r
+ case GL_TEXTURE_1D_ARRAY_EXT:\r
+ glGetIntegerv(GL_TEXTURE_BINDING_1D_ARRAY_EXT, &bound);\r
+ break;\r
+#endif\r
case GL_TEXTURE_2D:\r
glGetIntegerv(GL_TEXTURE_BINDING_2D, &bound);\r
break;\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
glBindTexture(target, bound);\r
}\r
+#endif // GL_VERSION_4_2 || _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
\r
inline void COpenGLExtensionHandler::extGlTextureStorage3D(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlTextureStorage3D)\r
pGlTextureStorage3D(texture,levels,internalformat,width,height,depth);\r
-#else\r
+#elif defined(GL_VERSION_4_5)\r
glTextureStorage3D(texture,levels,internalformat,width,height,depth);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlTextureStorage3DEXT)\r
pGlTextureStorage3DEXT(texture,target,levels,internalformat,width,height,depth);\r
-#else\r
+#elif defined(GL_EXT_direct_state_access)\r
glTextureStorage3DEXT(texture,target,levels,internalformat,width,height,depth);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
-#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
- else if (pGlTexStorage3D)\r
-#else\r
+#if defined(GL_VERSION_4_2) || defined(_IRR_OPENGL_USE_EXTPOINTER_)\r
else\r
-#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
+#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
+ if (pGlTexStorage3D)\r
+#endif // _IRR_OPENGL_USE_EX TPOINTER_\r
{\r
GLint bound;\r
switch (target)\r
{\r
+#ifdef GL_VERSION_3_0\r
case GL_TEXTURE_2D_ARRAY:\r
glGetIntegerv(GL_TEXTURE_BINDING_2D_ARRAY, &bound);\r
break;\r
+#elif GL_EXT_texture_array\r
+ case GL_TEXTURE_2D_ARRAY_EXT:\r
+ glGetIntegerv(GL_TEXTURE_BINDING_2D_ARRAY_EXT, &bound);\r
+ break;\r
+#endif\r
case GL_TEXTURE_3D:\r
glGetIntegerv(GL_TEXTURE_BINDING_3D, &bound);\r
break;\r
+#ifdef GL_VERSION_4_0\r
case GL_TEXTURE_CUBE_MAP_ARRAY:\r
glGetIntegerv(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY, &bound);\r
break;\r
+#elif defined(GL_ARB_texture_cube_map_array)\r
+ case GL_TEXTURE_CUBE_MAP_ARRAY_ARB:\r
+ glGetIntegerv(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB, &bound);\r
+ break;\r
+#endif\r
default:\r
return;\r
}\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
glBindTexture(target, bound);\r
}\r
+#endif // GL_VERSION_4_2 || _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
\r
inline void COpenGLExtensionHandler::extGlGetTextureImage(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* pixels)\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlGetTextureImage)\r
pGlGetTextureImage(texture,level,format,type,bufSize,pixels);\r
-#else\r
+#elif defined(GL_VERSION_4_5)\r
glGetTextureImage(texture,level,format,type,bufSize,pixels);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlGetTextureImageEXT)\r
pGlGetTextureImageEXT(texture,target,level,format,type,pixels);\r
-#else\r
+#elif defined(GL_EXT_direct_state_access)\r
glGetTextureImageEXT(texture,target,level,format,type,pixels);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
GLint bound;\r
switch (target)\r
{\r
+#ifdef GL_VERSION_3_0\r
case GL_TEXTURE_2D_ARRAY:\r
glGetIntegerv(GL_TEXTURE_BINDING_2D_ARRAY, &bound);\r
break;\r
+#elif GL_EXT_texture_array\r
+ case GL_TEXTURE_2D_ARRAY_EXT:\r
+ glGetIntegerv(GL_TEXTURE_BINDING_2D_ARRAY_EXT, &bound);\r
+ break;\r
+#endif\r
case GL_TEXTURE_3D:\r
glGetIntegerv(GL_TEXTURE_BINDING_3D, &bound);\r
break;\r
+#ifdef GL_VERSION_4_0\r
case GL_TEXTURE_CUBE_MAP_ARRAY:\r
glGetIntegerv(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY, &bound);\r
break;\r
+#elif defined(GL_ARB_texture_cube_map_array)\r
+ case GL_TEXTURE_CUBE_MAP_ARRAY_ARB:\r
+ glGetIntegerv(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB, &bound);\r
+ break;\r
+#endif\r
default:\r
return;\r
}\r
\r
inline void COpenGLExtensionHandler::extGlNamedFramebufferTexture(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level)\r
{\r
+#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (!needsDSAFramebufferHack)\r
{\r
if (Version>=405 || FeatureAvailable[IRR_ARB_direct_state_access])\r
pGlFramebufferTexture(GL_FRAMEBUFFER,attachment,texture,level);\r
if (bound!=framebuffer)\r
pGlBindFramebuffer(GL_FRAMEBUFFER,bound);\r
+#endif\r
}\r
\r
inline void COpenGLExtensionHandler::extGlTextureParameteri(GLuint texture, GLenum pname, GLint param)\r
pGlCreateTextures(target,n,textures);\r
else if (textures)\r
memset(textures,0,n*sizeof(GLuint));\r
-#else\r
+#elif defined(GL_VERSION_4_5)\r
glCreateTextures(target,n,textures);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
\r
inline void COpenGLExtensionHandler::extGlCreateFramebuffers(GLsizei n, GLuint* framebuffers)\r
{\r
+#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (!needsDSAFramebufferHack)\r
{\r
if (Version>=405)\r
}\r
\r
pGlGenFramebuffers(n, framebuffers);\r
+#endif\r
}\r
\r
inline void COpenGLExtensionHandler::extGlBindTextures(GLuint first, GLsizei count, const GLuint *textures, const GLenum* targets)\r
{\r
- const GLenum supportedTargets[] = { GL_TEXTURE_1D,GL_TEXTURE_2D, // GL 1.x\r
- GL_TEXTURE_3D,GL_TEXTURE_RECTANGLE,GL_TEXTURE_CUBE_MAP, // GL 2.x\r
- GL_TEXTURE_1D_ARRAY,GL_TEXTURE_2D_ARRAY,GL_TEXTURE_BUFFER, // GL 3.x\r
- GL_TEXTURE_CUBE_MAP_ARRAY,GL_TEXTURE_2D_MULTISAMPLE,GL_TEXTURE_2D_MULTISAMPLE_ARRAY}; // GL 4.x\r
+ const GLenum supportedTargets[] = { GL_TEXTURE_1D, GL_TEXTURE_2D // GL 1.x\r
+ ,GL_TEXTURE_3D // GL 2.x\r
+#ifdef GL_VERSION_3_1\r
+ ,GL_TEXTURE_RECTANGLE\r
+#elif defined(GL_ARB_texture_rectangle)\r
+ ,GL_TEXTURE_RECTANGLE_ARB\r
+#elif defined(GL_NV_texture_rectangle)\r
+ ,GL_TEXTURE_RECTANGLE_NV\r
+#endif\r
+ ,GL_TEXTURE_CUBE_MAP\r
+#ifdef GL_VERSION_3_0\r
+ ,GL_TEXTURE_1D_ARRAY,GL_TEXTURE_2D_ARRAY // GL 3.x\r
+#elif GL_EXT_texture_array\r
+ ,GL_TEXTURE_1D_ARRAY_EXT,GL_TEXTURE_2D_ARRAY_EXT\r
+#endif\r
+#ifdef GL_VERSION_3_1\r
+ ,GL_TEXTURE_BUFFER\r
+#elif defined(GL_ARB_texture_buffer_object)\r
+ ,GL_TEXTURE_BUFFER_ARB\r
+#elif defined(GL_EXT_texture_buffer_object)\r
+ ,GL_TEXTURE_BUFFER_EXT\r
+#endif\r
+#ifdef GL_VERSION_4_0\r
+ ,GL_TEXTURE_CUBE_MAP_ARRAY // GL 4.x\r
+#elif defined(GL_ARB_texture_cube_map_array)\r
+ ,GL_TEXTURE_CUBE_MAP_ARRAY_ARB\r
+#endif\r
+#ifdef GL_VERSION_3_2\r
+ ,GL_TEXTURE_2D_MULTISAMPLE,GL_TEXTURE_2D_MULTISAMPLE_ARRAY\r
+#endif\r
+ };\r
\r
if (Version>=404||FeatureAvailable[IRR_ARB_multi_bind])\r
{\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlBindTextures)\r
pGlBindTextures(first,count,textures);\r
-#else\r
+#elif defined(GL_VERSION_4_4)\r
glBindTextures(first,count,textures);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlGenerateTextureMipmap)\r
pGlGenerateTextureMipmap(texture);\r
-#else\r
+#elif defined(GL_VERSION_4_5)\r
glGenerateTextureMipmap(texture);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
#ifdef _IRR_OPENGL_USE_EXTPOINTER_\r
if (pGlGenerateTextureMipmapEXT)\r
pGlGenerateTextureMipmapEXT(texture,target);\r
-#else\r
+#elif defined(GL_EXT_direct_state_access)\r
glGenerateTextureMipmapEXT(texture,target);\r
#endif // _IRR_OPENGL_USE_EXTPOINTER_\r
}\r
case GL_TEXTURE_1D:\r
glGetIntegerv(GL_TEXTURE_BINDING_1D, &bound);\r
break;\r
+#ifdef GL_VERSION_3_0\r
case GL_TEXTURE_1D_ARRAY:\r
glGetIntegerv(GL_TEXTURE_BINDING_1D_ARRAY, &bound);\r
break;\r
+#elif GL_EXT_texture_array\r
+ case GL_TEXTURE_1D_ARRAY_EXT:\r
+ glGetIntegerv(GL_TEXTURE_BINDING_1D_ARRAY_EXT, &bound);\r
+ break;\r
+#endif\r
case GL_TEXTURE_2D:\r
glGetIntegerv(GL_TEXTURE_BINDING_2D, &bound);\r
break;\r
+#ifdef GL_VERSION_3_0\r
case GL_TEXTURE_2D_ARRAY:\r
glGetIntegerv(GL_TEXTURE_BINDING_2D_ARRAY, &bound);\r
break;\r
+#elif GL_EXT_texture_array\r
+ case GL_TEXTURE_2D_ARRAY_EXT:\r
+ glGetIntegerv(GL_TEXTURE_BINDING_2D_ARRAY_EXT, &bound);\r
+ break;\r
+#endif\r
+#ifdef GL_VERSION_3_2\r
case GL_TEXTURE_2D_MULTISAMPLE:\r
glGetIntegerv(GL_TEXTURE_BINDING_2D_MULTISAMPLE, &bound);\r
break;\r
case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:\r
glGetIntegerv(GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY, &bound);\r
break;\r
+#endif\r
case GL_TEXTURE_3D:\r
glGetIntegerv(GL_TEXTURE_BINDING_3D, &bound);\r
break;\r
+#ifdef GL_VERSION_3_1\r
case GL_TEXTURE_BUFFER:\r
glGetIntegerv(GL_TEXTURE_BINDING_BUFFER, &bound);\r
break;\r
+#elif defined(GL_ARB_texture_buffer_object)\r
+ case GL_TEXTURE_BUFFER_ARB:\r
+ glGetIntegerv(GL_TEXTURE_BINDING_BUFFER_ARB, &bound);\r
+ break;\r
+#elif defined(GL_EXT_texture_buffer_object)\r
+ case GL_TEXTURE_BUFFER_EXT:\r
+ glGetIntegerv(GL_TEXTURE_BINDING_BUFFER_EXT, &bound);\r
+ break;\r
+#endif\r
case GL_TEXTURE_CUBE_MAP:\r
glGetIntegerv(GL_TEXTURE_BINDING_CUBE_MAP, &bound);\r
break;\r
+#ifdef GL_VERSION_4_0\r
case GL_TEXTURE_CUBE_MAP_ARRAY:\r
glGetIntegerv(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY, &bound);\r
break;\r
+#elif defined(GL_ARB_texture_cube_map_array)\r
+ case GL_TEXTURE_CUBE_MAP_ARRAY_ARB:\r
+ glGetIntegerv(GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB, &bound);\r
+ break;\r
+#endif\r
case GL_TEXTURE_RECTANGLE:\r
glGetIntegerv(GL_TEXTURE_BINDING_RECTANGLE, &bound);\r
break;\r