]> git.lizzy.rs Git - irrlicht.git/blobdiff - source/Irrlicht/COpenGLExtensionHandler.h
Merging r6122 through r6127 from trunk to ogl-es branch
[irrlicht.git] / source / Irrlicht / COpenGLExtensionHandler.h
index ad853b1ea6af44e1c6e843539b05781889be1757..ac6585c5afad6032835af0ef0d97e0e897a43a21 100644 (file)
@@ -1915,7 +1915,7 @@ inline void COpenGLExtensionHandler::extGlUniform1uiv(GLint loc, GLsizei count,
 #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
@@ -1925,7 +1925,7 @@ inline void COpenGLExtensionHandler::extGlUniform2uiv(GLint loc, GLsizei count,
 #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
@@ -1935,7 +1935,7 @@ inline void COpenGLExtensionHandler::extGlUniform3uiv(GLint loc, GLsizei count,
 #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
@@ -1945,7 +1945,7 @@ inline void COpenGLExtensionHandler::extGlUniform4uiv(GLint loc, GLsizei count,
 #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
@@ -2867,7 +2867,7 @@ inline void COpenGLExtensionHandler::extGlTextureSubImage2D(GLuint texture, GLen
 #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
@@ -2876,7 +2876,7 @@ inline void COpenGLExtensionHandler::extGlTextureSubImage2D(GLuint texture, GLen
 #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
@@ -2885,15 +2885,23 @@ inline void COpenGLExtensionHandler::extGlTextureSubImage2D(GLuint texture, GLen
         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
@@ -2921,7 +2929,7 @@ inline void COpenGLExtensionHandler::extGlTextureStorage2D(GLuint texture, GLenu
 #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
@@ -2930,22 +2938,29 @@ inline void COpenGLExtensionHandler::extGlTextureStorage2D(GLuint texture, GLenu
 #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
@@ -2966,6 +2981,7 @@ inline void COpenGLExtensionHandler::extGlTextureStorage2D(GLuint texture, GLenu
 #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
@@ -2975,7 +2991,7 @@ inline void COpenGLExtensionHandler::extGlTextureStorage3D(GLuint texture, GLenu
 #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
@@ -2984,28 +3000,40 @@ inline void COpenGLExtensionHandler::extGlTextureStorage3D(GLuint texture, GLenu
 #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
@@ -3017,6 +3045,7 @@ inline void COpenGLExtensionHandler::extGlTextureStorage3D(GLuint texture, GLenu
 #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
@@ -3026,7 +3055,7 @@ inline void COpenGLExtensionHandler::extGlGetTextureImage(GLuint texture, GLenum
 #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
@@ -3035,7 +3064,7 @@ inline void COpenGLExtensionHandler::extGlGetTextureImage(GLuint texture, GLenum
 #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
@@ -3044,15 +3073,27 @@ inline void COpenGLExtensionHandler::extGlGetTextureImage(GLuint texture, GLenum
                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
@@ -3064,6 +3105,7 @@ inline void COpenGLExtensionHandler::extGlGetTextureImage(GLuint texture, GLenum
 \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
@@ -3086,6 +3128,7 @@ inline void COpenGLExtensionHandler::extGlNamedFramebufferTexture(GLuint framebu
     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
@@ -3129,7 +3172,7 @@ inline void COpenGLExtensionHandler::extGlCreateTextures(GLenum target, GLsizei
             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
@@ -3141,6 +3184,7 @@ inline void COpenGLExtensionHandler::extGlCreateTextures(GLenum target, GLsizei
 \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
@@ -3151,21 +3195,49 @@ inline void COpenGLExtensionHandler::extGlCreateFramebuffers(GLsizei n, GLuint*
     }\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
@@ -3201,7 +3273,7 @@ inline void COpenGLExtensionHandler::extGlGenerateTextureMipmap(GLuint texture,
 #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
@@ -3210,7 +3282,7 @@ inline void COpenGLExtensionHandler::extGlGenerateTextureMipmap(GLuint texture,
 #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
@@ -3226,33 +3298,63 @@ inline void COpenGLExtensionHandler::extGlGenerateTextureMipmap(GLuint texture,
             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