diff options
author | James Cowgill <james410@cowgill.org.uk> | 2015-05-08 21:14:39 +0100 |
---|---|---|
committer | James Cowgill <james410@cowgill.org.uk> | 2015-05-08 21:14:39 +0100 |
commit | ebd1b636e5bf0f8fa6d210690582757e8b47f141 (patch) | |
tree | 02dc3aacf1c6f351154432247be0b4347fb14330 /src/SFML/Graphics/GLExtensions.hpp | |
parent | fa21c65d0c764705cfc377bf0d0de08fac26874e (diff) |
Imported Upstream version 2.3+dfsg
Diffstat (limited to 'src/SFML/Graphics/GLExtensions.hpp')
-rw-r--r-- | src/SFML/Graphics/GLExtensions.hpp | 246 |
1 files changed, 175 insertions, 71 deletions
diff --git a/src/SFML/Graphics/GLExtensions.hpp b/src/SFML/Graphics/GLExtensions.hpp index ae97741..7cff594 100644 --- a/src/SFML/Graphics/GLExtensions.hpp +++ b/src/SFML/Graphics/GLExtensions.hpp @@ -1,7 +1,7 @@ //////////////////////////////////////////////////////////// // // SFML - Simple and Fast Multimedia Library -// Copyright (C) 2007-2013 Laurent Gomila (laurent.gom@gmail.com) +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) // // This software is provided 'as-is', without any express or implied warranty. // In no event will the authors be held liable for any damages arising from the use of this software. @@ -34,80 +34,184 @@ #include <SFML/OpenGL.hpp> -#ifdef SFML_SYSTEM_ANDROID - // Hack to make transparency working on some Android devices - #define GLEXT_blend_func_separate false - #define GLEXT_blend_equation_separate false -#else - #define GLEXT_blend_func_separate GL_OES_blend_func_separate - #define GLEXT_blend_equation_separate GL_OES_blend_equation_separate -#endif - #define GLEXT_glBlendFuncSeparate glBlendFuncSeparateOES - #define GLEXT_glBlendEquationSeparate glBlendEquationSeparateOES - #define GLEXT_framebuffer_object GL_OES_framebuffer_object - #define GLEXT_glGenFramebuffers glGenFramebuffersOES - #define GLEXT_glGenRenderbuffers glGenRenderbuffersOES - #define GLEXT_glBindFramebuffer glBindFramebufferOES - #define GLEXT_glBindRenderbuffer glBindRenderbufferOES - #define GLEXT_glDeleteFramebuffers glDeleteFramebuffersOES - #define GLEXT_glDeleteRenderbuffers glDeleteRenderbuffersOES - #define GLEXT_glRenderbufferStorage glRenderbufferStorageOES - #define GLEXT_glFramebufferRenderbuffer glFramebufferRenderbufferOES - #define GLEXT_glFramebufferTexture2D glFramebufferTexture2DOES - #define GLEXT_glCheckFramebufferStatus glCheckFramebufferStatusOES - #define GLEXT_GL_FRAMEBUFFER GL_FRAMEBUFFER_OES - #define GLEXT_GL_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING_OES - #define GLEXT_GL_RENDERBUFFER GL_RENDERBUFFER_OES - #define GLEXT_GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_OES - #define GLEXT_GL_DEPTH_ATTACHMENT GL_DEPTH_ATTACHMENT_OES - #define GLEXT_GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_OES - #define GLEXT_GL_DEPTH_COMPONENT GL_DEPTH_COMPONENT16_OES - #define GLEXT_GL_INVALID_FRAMEBUFFER_OPERATION GL_INVALID_FRAMEBUFFER_OPERATION_OES - #define GLEXT_texture_non_power_of_two false - #define GLEXT_multitexture true - #define GLEXT_glClientActiveTexture glClientActiveTexture - #define GLEXT_glActiveTexture glActiveTexture - #define GLEXT_GL_TEXTURE0 GL_TEXTURE0 - #define GLEXT_glBlendEquation glBlendEquationOES - #define GLEXT_GL_FUNC_ADD GL_FUNC_ADD_OES - #define GLEXT_GL_FUNC_SUBTRACT GL_FUNC_SUBTRACT_OES + // SFML requires at a bare minimum OpenGL ES 1.0 capability + // Some extensions only incorporated by 2.0 are also required + // OpenGL ES 1.0 is defined relative to OpenGL 1.3 + // OpenGL ES 1.1 is defined relative to OpenGL 1.5 + // OpenGL ES 2.0 is defined relative to OpenGL 2.0 + // All functionality beyond that is optional + // and has to be checked for prior to use + + // Core since 1.0 + #define GLEXT_multitexture true + #define GLEXT_texture_edge_clamp true + #define GLEXT_blend_minmax true + #define GLEXT_glClientActiveTexture glClientActiveTexture + #define GLEXT_glActiveTexture glActiveTexture + #define GLEXT_GL_TEXTURE0 GL_TEXTURE0 + #define GLEXT_GL_CLAMP GL_CLAMP_TO_EDGE + #define GLEXT_GL_CLAMP_TO_EDGE GL_CLAMP_TO_EDGE + + // The following extensions are listed chronologically + // Extension macro first, followed by tokens then + // functions according to the corresponding specification + + // The following extensions are required. + + // Core since 2.0 - OES_blend_subtract + #define GLEXT_blend_subtract GL_OES_blend_subtract + #define GLEXT_glBlendEquation glBlendEquationOES + #define GLEXT_GL_FUNC_ADD GL_FUNC_ADD_OES + #define GLEXT_GL_FUNC_SUBTRACT GL_FUNC_SUBTRACT_OES + + // The following extensions are optional. + + // Core since 2.0 - OES_blend_func_separate + #ifdef SFML_SYSTEM_ANDROID + // Hack to make transparency working on some Android devices + #define GLEXT_blend_func_separate false + #else + #define GLEXT_blend_func_separate GL_OES_blend_func_separate + #endif + #define GLEXT_glBlendFuncSeparate glBlendFuncSeparateOES + + // Core since 2.0 - OES_blend_equation_separate + #ifdef SFML_SYSTEM_ANDROID + // Hack to make transparency working on some Android devices + #define GLEXT_blend_equation_separate false + #else + #define GLEXT_blend_equation_separate GL_OES_blend_equation_separate + #endif + #define GLEXT_glBlendEquationSeparate glBlendEquationSeparateOES + + // Core since 2.0 - OES_texture_npot + #define GLEXT_texture_non_power_of_two false + + // Core since 2.0 - OES_framebuffer_object + #define GLEXT_framebuffer_object GL_OES_framebuffer_object + #define GLEXT_glBindRenderbuffer glBindRenderbufferOES + #define GLEXT_glDeleteRenderbuffers glDeleteRenderbuffersOES + #define GLEXT_glGenRenderbuffers glGenRenderbuffersOES + #define GLEXT_glRenderbufferStorage glRenderbufferStorageOES + #define GLEXT_glBindFramebuffer glBindFramebufferOES + #define GLEXT_glDeleteFramebuffers glDeleteFramebuffersOES + #define GLEXT_glGenFramebuffers glGenFramebuffersOES + #define GLEXT_glCheckFramebufferStatus glCheckFramebufferStatusOES + #define GLEXT_glFramebufferTexture2D glFramebufferTexture2DOES + #define GLEXT_glFramebufferRenderbuffer glFramebufferRenderbufferOES + #define GLEXT_GL_FRAMEBUFFER GL_FRAMEBUFFER_OES + #define GLEXT_GL_RENDERBUFFER GL_RENDERBUFFER_OES + #define GLEXT_GL_DEPTH_COMPONENT GL_DEPTH_COMPONENT16_OES + #define GLEXT_GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_OES + #define GLEXT_GL_DEPTH_ATTACHMENT GL_DEPTH_ATTACHMENT_OES + #define GLEXT_GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_OES + #define GLEXT_GL_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING_OES + #define GLEXT_GL_INVALID_FRAMEBUFFER_OPERATION GL_INVALID_FRAMEBUFFER_OPERATION_OES #else - #include <GL/glew.h> - #include <SFML/OpenGL.hpp> + #include <SFML/Graphics/GLLoader.hpp> + + // SFML requires at a bare minimum OpenGL 1.1 capability + // All functionality beyond that is optional + // and has to be checked for prior to use + + // Core since 1.1 + #define GLEXT_GL_DEPTH_COMPONENT GL_DEPTH_COMPONENT + #define GLEXT_GL_CLAMP GL_CLAMP + + // The following extensions are listed chronologically + // Extension macro first, followed by tokens then + // functions according to the corresponding specification + + // The following extensions are optional. + + // Core since 1.2 - SGIS_texture_edge_clamp + #define GLEXT_texture_edge_clamp sfogl_ext_SGIS_texture_edge_clamp + #define GLEXT_GL_CLAMP_TO_EDGE GL_CLAMP_TO_EDGE_SGIS + + // Core since 1.2 - EXT_blend_minmax + #define GLEXT_blend_minmax sfogl_ext_EXT_blend_minmax + #define GLEXT_glBlendEquation glBlendEquationEXT + #define GLEXT_GL_FUNC_ADD GL_FUNC_ADD_EXT + + // Core since 1.2 - EXT_blend_subtract + #define GLEXT_blend_subtract sfogl_ext_EXT_blend_subtract + #define GLEXT_GL_FUNC_SUBTRACT GL_FUNC_SUBTRACT_EXT + + // Core since 1.3 - ARB_multitexture + #define GLEXT_multitexture sfogl_ext_ARB_multitexture + #define GLEXT_glClientActiveTexture glClientActiveTextureARB + #define GLEXT_glActiveTexture glActiveTextureARB + #define GLEXT_GL_TEXTURE0 GL_TEXTURE0_ARB + + // Core since 1.4 - EXT_blend_func_separate + #define GLEXT_blend_func_separate sfogl_ext_EXT_blend_func_separate + #define GLEXT_glBlendFuncSeparate glBlendFuncSeparateEXT + + // Core since 2.0 - ARB_shading_language_100 + #define GLEXT_shading_language_100 sfogl_ext_ARB_shading_language_100 + + // Core since 2.0 - ARB_shader_objects + #define GLEXT_shader_objects sfogl_ext_ARB_shader_objects + #define GLEXT_glDeleteObject glDeleteObjectARB + #define GLEXT_glGetHandle glGetHandleARB + #define GLEXT_glCreateShaderObject glCreateShaderObjectARB + #define GLEXT_glShaderSource glShaderSourceARB + #define GLEXT_glCompileShader glCompileShaderARB + #define GLEXT_glCreateProgramObject glCreateProgramObjectARB + #define GLEXT_glAttachObject glAttachObjectARB + #define GLEXT_glLinkProgram glLinkProgramARB + #define GLEXT_glUseProgramObject glUseProgramObjectARB + #define GLEXT_glUniform1f glUniform1fARB + #define GLEXT_glUniform2f glUniform2fARB + #define GLEXT_glUniform3f glUniform3fARB + #define GLEXT_glUniform4f glUniform4fARB + #define GLEXT_glUniform1i glUniform1iARB + #define GLEXT_glUniformMatrix4fv glUniformMatrix4fvARB + #define GLEXT_glGetObjectParameteriv glGetObjectParameterivARB + #define GLEXT_glGetInfoLog glGetInfoLogARB + #define GLEXT_glGetUniformLocation glGetUniformLocationARB + #define GLEXT_GL_PROGRAM_OBJECT GL_PROGRAM_OBJECT_ARB + #define GLEXT_GL_OBJECT_COMPILE_STATUS GL_OBJECT_COMPILE_STATUS_ARB + #define GLEXT_GL_OBJECT_LINK_STATUS GL_OBJECT_LINK_STATUS_ARB + #define GLEXT_GLhandle GLhandleARB + + // Core since 2.0 - ARB_vertex_shader + #define GLEXT_vertex_shader sfogl_ext_ARB_vertex_shader + #define GLEXT_GL_VERTEX_SHADER GL_VERTEX_SHADER_ARB + #define GLEXT_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB + + // Core since 2.0 - ARB_fragment_shader + #define GLEXT_fragment_shader sfogl_ext_ARB_fragment_shader + #define GLEXT_GL_FRAGMENT_SHADER GL_FRAGMENT_SHADER_ARB + + // Core since 2.0 - ARB_texture_non_power_of_two + #define GLEXT_texture_non_power_of_two sfogl_ext_ARB_texture_non_power_of_two + + // Core since 2.0 - EXT_blend_equation_separate + #define GLEXT_blend_equation_separate sfogl_ext_EXT_blend_equation_separate + #define GLEXT_glBlendEquationSeparate glBlendEquationSeparateEXT - #define GLEXT_blend_func_separate GLEW_EXT_blend_func_separate - #define GLEXT_blend_equation_separate GLEW_EXT_blend_equation_separate - #define GLEXT_glBlendFuncSeparate glBlendFuncSeparateEXT - #define GLEXT_glBlendEquationSeparate glBlendEquationSeparateEXT - #define GLEXT_framebuffer_object GLEW_EXT_framebuffer_object - #define GLEXT_glGenFramebuffers glGenFramebuffersEXT - #define GLEXT_glGenRenderbuffers glGenRenderbuffersEXT - #define GLEXT_glBindFramebuffer glBindFramebufferEXT - #define GLEXT_glBindRenderbuffer glBindRenderbufferEXT - #define GLEXT_glDeleteFramebuffers glDeleteFramebuffersEXT - #define GLEXT_glDeleteRenderbuffers glDeleteRenderbuffersEXT - #define GLEXT_glRenderbufferStorage glRenderbufferStorageEXT - #define GLEXT_glFramebufferRenderbuffer glFramebufferRenderbufferEXT - #define GLEXT_glFramebufferTexture2D glFramebufferTexture2DEXT - #define GLEXT_glCheckFramebufferStatus glCheckFramebufferStatusEXT - #define GLEXT_GL_FRAMEBUFFER GL_FRAMEBUFFER_EXT - #define GLEXT_GL_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING_EXT - #define GLEXT_GL_RENDERBUFFER GL_RENDERBUFFER_EXT - #define GLEXT_GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_EXT - #define GLEXT_GL_DEPTH_ATTACHMENT GL_DEPTH_ATTACHMENT_EXT - #define GLEXT_GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_EXT - #define GLEXT_GL_DEPTH_COMPONENT GL_DEPTH_COMPONENT - #define GLEXT_GL_INVALID_FRAMEBUFFER_OPERATION GL_INVALID_FRAMEBUFFER_OPERATION_EXT - #define GLEXT_texture_non_power_of_two GLEW_ARB_texture_non_power_of_two - #define GLEXT_multitexture GLEW_ARB_multitexture - #define GLEXT_glClientActiveTexture glClientActiveTextureARB - #define GLEXT_glActiveTexture glActiveTextureARB - #define GLEXT_GL_TEXTURE0 GL_TEXTURE0_ARB - #define GLEXT_glBlendEquation glBlendEquation - #define GLEXT_GL_FUNC_ADD GL_FUNC_ADD - #define GLEXT_GL_FUNC_SUBTRACT GL_FUNC_SUBTRACT + // Core since 3.0 - EXT_framebuffer_object + #define GLEXT_framebuffer_object sfogl_ext_EXT_framebuffer_object + #define GLEXT_glBindRenderbuffer glBindRenderbufferEXT + #define GLEXT_glDeleteRenderbuffers glDeleteRenderbuffersEXT + #define GLEXT_glGenRenderbuffers glGenRenderbuffersEXT + #define GLEXT_glRenderbufferStorage glRenderbufferStorageEXT + #define GLEXT_glBindFramebuffer glBindFramebufferEXT + #define GLEXT_glDeleteFramebuffers glDeleteFramebuffersEXT + #define GLEXT_glGenFramebuffers glGenFramebuffersEXT + #define GLEXT_glCheckFramebufferStatus glCheckFramebufferStatusEXT + #define GLEXT_glFramebufferTexture2D glFramebufferTexture2DEXT + #define GLEXT_glFramebufferRenderbuffer glFramebufferRenderbufferEXT + #define GLEXT_GL_FRAMEBUFFER GL_FRAMEBUFFER_EXT + #define GLEXT_GL_RENDERBUFFER GL_RENDERBUFFER_EXT + #define GLEXT_GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_EXT + #define GLEXT_GL_DEPTH_ATTACHMENT GL_DEPTH_ATTACHMENT_EXT + #define GLEXT_GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_EXT + #define GLEXT_GL_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING_EXT + #define GLEXT_GL_INVALID_FRAMEBUFFER_OPERATION GL_INVALID_FRAMEBUFFER_OPERATION_EXT #endif |