summaryrefslogtreecommitdiff
path: root/src/SFML/Graphics/GLExtensions.hpp
diff options
context:
space:
mode:
authorJames Cowgill <james410@cowgill.org.uk>2015-05-08 21:14:39 +0100
committerJames Cowgill <james410@cowgill.org.uk>2015-05-08 21:14:39 +0100
commitebd1b636e5bf0f8fa6d210690582757e8b47f141 (patch)
tree02dc3aacf1c6f351154432247be0b4347fb14330 /src/SFML/Graphics/GLExtensions.hpp
parentfa21c65d0c764705cfc377bf0d0de08fac26874e (diff)
Imported Upstream version 2.3+dfsg
Diffstat (limited to 'src/SFML/Graphics/GLExtensions.hpp')
-rw-r--r--src/SFML/Graphics/GLExtensions.hpp246
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