aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/irrlicht-1.8/source/Irrlicht/COpenGLExtensionHandler.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libraries/irrlicht-1.8/source/Irrlicht/COpenGLExtensionHandler.h5174
1 files changed, 2587 insertions, 2587 deletions
diff --git a/libraries/irrlicht-1.8/source/Irrlicht/COpenGLExtensionHandler.h b/libraries/irrlicht-1.8/source/Irrlicht/COpenGLExtensionHandler.h
index 109e243..0d132d8 100644
--- a/libraries/irrlicht-1.8/source/Irrlicht/COpenGLExtensionHandler.h
+++ b/libraries/irrlicht-1.8/source/Irrlicht/COpenGLExtensionHandler.h
@@ -1,2587 +1,2587 @@
1// Copyright (C) 2002-2012 Nikolaus Gebhardt 1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine". 2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in Irrlicht.h 3// For conditions of distribution and use, see copyright notice in Irrlicht.h
4 4
5#ifndef __C_OPEN_GL_FEATURE_MAP_H_INCLUDED__ 5#ifndef __C_OPEN_GL_FEATURE_MAP_H_INCLUDED__
6#define __C_OPEN_GL_FEATURE_MAP_H_INCLUDED__ 6#define __C_OPEN_GL_FEATURE_MAP_H_INCLUDED__
7 7
8#include "IrrCompileConfig.h" 8#include "IrrCompileConfig.h"
9#ifdef _IRR_COMPILE_WITH_OPENGL_ 9#ifdef _IRR_COMPILE_WITH_OPENGL_
10 10
11#include "EDriverFeatures.h" 11#include "EDriverFeatures.h"
12#include "irrTypes.h" 12#include "irrTypes.h"
13#include "os.h" 13#include "os.h"
14 14
15#if defined(_IRR_WINDOWS_API_) 15#if defined(_IRR_WINDOWS_API_)
16 // include windows headers for HWND 16 // include windows headers for HWND
17 #define WIN32_LEAN_AND_MEAN 17 #define WIN32_LEAN_AND_MEAN
18 #include <windows.h> 18 #include <windows.h>
19 #if defined(_IRR_OPENGL_USE_EXTPOINTER_) 19 #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
20 #define GL_GLEXT_LEGACY 1 20 #define GL_GLEXT_LEGACY 1
21 #endif 21 #endif
22 #include <GL/gl.h> 22 #include <GL/gl.h>
23 #if defined(_IRR_OPENGL_USE_EXTPOINTER_) 23 #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
24 #include "glext.h" 24 #include "glext.h"
25 #endif 25 #endif
26 #include "wglext.h" 26 #include "wglext.h"
27 27
28 #ifdef _MSC_VER 28 #ifdef _MSC_VER
29 #pragma comment(lib, "OpenGL32.lib") 29 #pragma comment(lib, "OpenGL32.lib")
30 #endif 30 #endif
31 31
32#elif defined(_IRR_COMPILE_WITH_OSX_DEVICE_) 32#elif defined(_IRR_COMPILE_WITH_OSX_DEVICE_)
33 #include "CIrrDeviceMacOSX.h" 33 #include "CIrrDeviceMacOSX.h"
34 #if defined(_IRR_OPENGL_USE_EXTPOINTER_) 34 #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
35 #define GL_GLEXT_LEGACY 1 35 #define GL_GLEXT_LEGACY 1
36 #endif 36 #endif
37 #include <OpenGL/gl.h> 37 #include <OpenGL/gl.h>
38 #if defined(_IRR_OPENGL_USE_EXTPOINTER_) 38 #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
39 #include "glext.h" 39 #include "glext.h"
40 #endif 40 #endif
41#elif defined(_IRR_COMPILE_WITH_SDL_DEVICE_) && !defined(_IRR_COMPILE_WITH_X11_DEVICE_) 41#elif defined(_IRR_COMPILE_WITH_SDL_DEVICE_) && !defined(_IRR_COMPILE_WITH_X11_DEVICE_)
42 #if defined(_IRR_OPENGL_USE_EXTPOINTER_) 42 #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
43 #define GL_GLEXT_LEGACY 1 43 #define GL_GLEXT_LEGACY 1
44 #define GLX_GLXEXT_LEGACY 1 44 #define GLX_GLXEXT_LEGACY 1
45 #else 45 #else
46 #define GL_GLEXT_PROTOTYPES 1 46 #define GL_GLEXT_PROTOTYPES 1
47 #define GLX_GLXEXT_PROTOTYPES 1 47 #define GLX_GLXEXT_PROTOTYPES 1
48 #endif 48 #endif
49 #define NO_SDL_GLEXT 49 #define NO_SDL_GLEXT
50 #include <SDL/SDL_video.h> 50 #include <SDL/SDL_video.h>
51 #include <SDL/SDL_opengl.h> 51 #include <SDL/SDL_opengl.h>
52 #include "glext.h" 52 #include "glext.h"
53#else 53#else
54 #if defined(_IRR_OPENGL_USE_EXTPOINTER_) 54 #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
55 #define GL_GLEXT_LEGACY 1 55 #define GL_GLEXT_LEGACY 1
56 #define GLX_GLXEXT_LEGACY 1 56 #define GLX_GLXEXT_LEGACY 1
57 #else 57 #else
58 #define GL_GLEXT_PROTOTYPES 1 58 #define GL_GLEXT_PROTOTYPES 1
59 #define GLX_GLXEXT_PROTOTYPES 1 59 #define GLX_GLXEXT_PROTOTYPES 1
60 #endif 60 #endif
61 #include <GL/gl.h> 61 #include <GL/gl.h>
62 #include <GL/glx.h> 62 #include <GL/glx.h>
63 #if defined(_IRR_OPENGL_USE_EXTPOINTER_) 63 #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
64 #include "glext.h" 64 #include "glext.h"
65 #undef GLX_ARB_get_proc_address // avoid problems with local glxext.h 65 #undef GLX_ARB_get_proc_address // avoid problems with local glxext.h
66 #include "glxext.h" 66 #include "glxext.h"
67 #endif 67 #endif
68#endif 68#endif
69 69
70#ifndef GL_ARB_shader_objects 70#ifndef GL_ARB_shader_objects
71/* GL types for program/shader text and shader object handles */ 71/* GL types for program/shader text and shader object handles */
72typedef char GLcharARB; 72typedef char GLcharARB;
73typedef unsigned int GLhandleARB; 73typedef unsigned int GLhandleARB;
74#endif 74#endif
75 75
76#ifndef GL_VERSION_2_0 76#ifndef GL_VERSION_2_0
77/* GL type for program/shader text */ 77/* GL type for program/shader text */
78typedef char GLchar; 78typedef char GLchar;
79#endif 79#endif
80 80
81 81
82namespace irr 82namespace irr
83{ 83{
84namespace video 84namespace video
85{ 85{
86 86
87 87
88static const char* const OpenGLFeatureStrings[] = { 88static const char* const OpenGLFeatureStrings[] = {
89 "GL_3DFX_multisample", 89 "GL_3DFX_multisample",
90 "GL_3DFX_tbuffer", 90 "GL_3DFX_tbuffer",
91 "GL_3DFX_texture_compression_FXT1", 91 "GL_3DFX_texture_compression_FXT1",
92 "GL_AMD_blend_minmax_factor", 92 "GL_AMD_blend_minmax_factor",
93 "GL_AMD_conservative_depth", 93 "GL_AMD_conservative_depth",
94 "GL_AMD_debug_output", 94 "GL_AMD_debug_output",
95 "GL_AMD_depth_clamp_separate", 95 "GL_AMD_depth_clamp_separate",
96 "GL_AMD_draw_buffers_blend", 96 "GL_AMD_draw_buffers_blend",
97 "GL_AMD_multi_draw_indirect", 97 "GL_AMD_multi_draw_indirect",
98 "GL_AMD_name_gen_delete", 98 "GL_AMD_name_gen_delete",
99 "GL_AMD_performance_monitor", 99 "GL_AMD_performance_monitor",
100 "GL_AMD_sample_positions", 100 "GL_AMD_sample_positions",
101 "GL_AMD_seamless_cubemap_per_texture", 101 "GL_AMD_seamless_cubemap_per_texture",
102 "GL_AMD_shader_stencil_export", 102 "GL_AMD_shader_stencil_export",
103 "GL_AMD_texture_texture4", 103 "GL_AMD_texture_texture4",
104 "GL_AMD_transform_feedback3_lines_triangles", 104 "GL_AMD_transform_feedback3_lines_triangles",
105 "GL_AMD_vertex_shader_tesselator", 105 "GL_AMD_vertex_shader_tesselator",
106 "GL_APPLE_aux_depth_stencil", 106 "GL_APPLE_aux_depth_stencil",
107 "GL_APPLE_client_storage", 107 "GL_APPLE_client_storage",
108 "GL_APPLE_element_array", 108 "GL_APPLE_element_array",
109 "GL_APPLE_fence", 109 "GL_APPLE_fence",
110 "GL_APPLE_float_pixels", 110 "GL_APPLE_float_pixels",
111 "GL_APPLE_flush_buffer_range", 111 "GL_APPLE_flush_buffer_range",
112 "GL_APPLE_object_purgeable", 112 "GL_APPLE_object_purgeable",
113 "GL_APPLE_rgb_422", 113 "GL_APPLE_rgb_422",
114 "GL_APPLE_row_bytes", 114 "GL_APPLE_row_bytes",
115 "GL_APPLE_specular_vector", 115 "GL_APPLE_specular_vector",
116 "GL_APPLE_texture_range", 116 "GL_APPLE_texture_range",
117 "GL_APPLE_transform_hint", 117 "GL_APPLE_transform_hint",
118 "GL_APPLE_vertex_array_object", 118 "GL_APPLE_vertex_array_object",
119 "GL_APPLE_vertex_array_range", 119 "GL_APPLE_vertex_array_range",
120 "GL_APPLE_vertex_program_evaluators", 120 "GL_APPLE_vertex_program_evaluators",
121 "GL_APPLE_ycbcr_422", 121 "GL_APPLE_ycbcr_422",
122 "GL_ARB_base_instance", 122 "GL_ARB_base_instance",
123 "GL_ARB_blend_func_extended", 123 "GL_ARB_blend_func_extended",
124 "GL_ARB_cl_event", 124 "GL_ARB_cl_event",
125 "GL_ARB_color_buffer_float", 125 "GL_ARB_color_buffer_float",
126 "GL_ARB_compatibility", 126 "GL_ARB_compatibility",
127 "GL_ARB_compressed_texture_pixel_storage", 127 "GL_ARB_compressed_texture_pixel_storage",
128 "GL_ARB_conservative_depth", 128 "GL_ARB_conservative_depth",
129 "GL_ARB_copy_buffer", 129 "GL_ARB_copy_buffer",
130 "GL_ARB_debug_output", 130 "GL_ARB_debug_output",
131 "GL_ARB_depth_buffer_float", 131 "GL_ARB_depth_buffer_float",
132 "GL_ARB_depth_clamp", 132 "GL_ARB_depth_clamp",
133 "GL_ARB_depth_texture", 133 "GL_ARB_depth_texture",
134 "GL_ARB_draw_buffers", 134 "GL_ARB_draw_buffers",
135 "GL_ARB_draw_buffers_blend", 135 "GL_ARB_draw_buffers_blend",
136 "GL_ARB_draw_elements_base_vertex", 136 "GL_ARB_draw_elements_base_vertex",
137 "GL_ARB_draw_indirect", 137 "GL_ARB_draw_indirect",
138 "GL_ARB_draw_instanced", 138 "GL_ARB_draw_instanced",
139 "GL_ARB_ES2_compatibility", 139 "GL_ARB_ES2_compatibility",
140 "GL_ARB_explicit_attrib_location", 140 "GL_ARB_explicit_attrib_location",
141 "GL_ARB_fragment_coord_conventions", 141 "GL_ARB_fragment_coord_conventions",
142 "GL_ARB_fragment_program", 142 "GL_ARB_fragment_program",
143 "GL_ARB_fragment_program_shadow", 143 "GL_ARB_fragment_program_shadow",
144 "GL_ARB_fragment_shader", 144 "GL_ARB_fragment_shader",
145 "GL_ARB_framebuffer_object", 145 "GL_ARB_framebuffer_object",
146 "GL_ARB_framebuffer_sRGB", 146 "GL_ARB_framebuffer_sRGB",
147 "GL_ARB_get_program_binary", 147 "GL_ARB_get_program_binary",
148 "GL_ARB_geometry_shader4", 148 "GL_ARB_geometry_shader4",
149 "GL_ARB_gpu_shader5", 149 "GL_ARB_gpu_shader5",
150 "GL_ARB_gpu_shader_fp64", 150 "GL_ARB_gpu_shader_fp64",
151 "GL_ARB_half_float_pixel", 151 "GL_ARB_half_float_pixel",
152 "GL_ARB_half_float_vertex", 152 "GL_ARB_half_float_vertex",
153 "GL_ARB_imaging", 153 "GL_ARB_imaging",
154 "GL_ARB_instanced_arrays", 154 "GL_ARB_instanced_arrays",
155 "GL_ARB_internalformat_query", 155 "GL_ARB_internalformat_query",
156 "GL_ARB_map_buffer_alignment", 156 "GL_ARB_map_buffer_alignment",
157 "GL_ARB_map_buffer_range", 157 "GL_ARB_map_buffer_range",
158 "GL_ARB_matrix_palette", 158 "GL_ARB_matrix_palette",
159 "GL_ARB_multisample", 159 "GL_ARB_multisample",
160 "GL_ARB_multitexture", 160 "GL_ARB_multitexture",
161 "GL_ARB_occlusion_query", 161 "GL_ARB_occlusion_query",
162 "GL_ARB_occlusion_query2", 162 "GL_ARB_occlusion_query2",
163 "GL_ARB_pixel_buffer_object", 163 "GL_ARB_pixel_buffer_object",
164 "GL_ARB_point_parameters", 164 "GL_ARB_point_parameters",
165 "GL_ARB_point_sprite", 165 "GL_ARB_point_sprite",
166 "GL_ARB_provoking_vertex", 166 "GL_ARB_provoking_vertex",
167 "GL_ARB_robustness", 167 "GL_ARB_robustness",
168 "GL_ARB_sample_shading", 168 "GL_ARB_sample_shading",
169 "GL_ARB_sampler_objects", 169 "GL_ARB_sampler_objects",
170 "GL_ARB_seamless_cube_map", 170 "GL_ARB_seamless_cube_map",
171 "GL_ARB_separate_shader_objects", 171 "GL_ARB_separate_shader_objects",
172 "GL_ARB_shader_atomic_counters", 172 "GL_ARB_shader_atomic_counters",
173 "GL_ARB_shader_bit_encoding", 173 "GL_ARB_shader_bit_encoding",
174 "GL_ARB_shader_image_load_store", 174 "GL_ARB_shader_image_load_store",
175 "GL_ARB_shader_objects", 175 "GL_ARB_shader_objects",
176 "GL_ARB_shader_precision", 176 "GL_ARB_shader_precision",
177 "GL_ARB_shader_stencil_export", 177 "GL_ARB_shader_stencil_export",
178 "GL_ARB_shader_subroutine", 178 "GL_ARB_shader_subroutine",
179 "GL_ARB_shader_texture_lod", 179 "GL_ARB_shader_texture_lod",
180 "GL_ARB_shading_language_100", 180 "GL_ARB_shading_language_100",
181 "GL_ARB_shading_language_420pack", 181 "GL_ARB_shading_language_420pack",
182 "GL_ARB_shading_language_include", 182 "GL_ARB_shading_language_include",
183 "GL_ARB_shading_language_packing", 183 "GL_ARB_shading_language_packing",
184 "GL_ARB_shadow", 184 "GL_ARB_shadow",
185 "GL_ARB_shadow_ambient", 185 "GL_ARB_shadow_ambient",
186 "GL_ARB_sync", 186 "GL_ARB_sync",
187 "GL_ARB_tessellation_shader", 187 "GL_ARB_tessellation_shader",
188 "GL_ARB_texture_border_clamp", 188 "GL_ARB_texture_border_clamp",
189 "GL_ARB_texture_buffer_object", 189 "GL_ARB_texture_buffer_object",
190 "GL_ARB_texture_buffer_object_rgb32", 190 "GL_ARB_texture_buffer_object_rgb32",
191 "GL_ARB_texture_compression", 191 "GL_ARB_texture_compression",
192 "GL_ARB_texture_compression_bptc", 192 "GL_ARB_texture_compression_bptc",
193 "GL_ARB_texture_compression_rgtc", 193 "GL_ARB_texture_compression_rgtc",
194 "GL_ARB_texture_cube_map", 194 "GL_ARB_texture_cube_map",
195 "GL_ARB_texture_cube_map_array", 195 "GL_ARB_texture_cube_map_array",
196 "GL_ARB_texture_env_add", 196 "GL_ARB_texture_env_add",
197 "GL_ARB_texture_env_combine", 197 "GL_ARB_texture_env_combine",
198 "GL_ARB_texture_env_crossbar", 198 "GL_ARB_texture_env_crossbar",
199 "GL_ARB_texture_env_dot3", 199 "GL_ARB_texture_env_dot3",
200 "GL_ARB_texture_float", 200 "GL_ARB_texture_float",
201 "GL_ARB_texture_gather", 201 "GL_ARB_texture_gather",
202 "GL_ARB_texture_mirrored_repeat", 202 "GL_ARB_texture_mirrored_repeat",
203 "GL_ARB_texture_multisample", 203 "GL_ARB_texture_multisample",
204 "GL_ARB_texture_non_power_of_two", 204 "GL_ARB_texture_non_power_of_two",
205 "GL_ARB_texture_query_lod", 205 "GL_ARB_texture_query_lod",
206 "GL_ARB_texture_rectangle", 206 "GL_ARB_texture_rectangle",
207 "GL_ARB_texture_rg", 207 "GL_ARB_texture_rg",
208 "GL_ARB_texture_rgb10_a2ui", 208 "GL_ARB_texture_rgb10_a2ui",
209 "GL_ARB_texture_storage", 209 "GL_ARB_texture_storage",
210 "GL_ARB_texture_swizzle", 210 "GL_ARB_texture_swizzle",
211 "GL_ARB_timer_query", 211 "GL_ARB_timer_query",
212 "GL_ARB_transform_feedback2", 212 "GL_ARB_transform_feedback2",
213 "GL_ARB_transform_feedback3", 213 "GL_ARB_transform_feedback3",
214 "GL_ARB_transform_feedback_instanced", 214 "GL_ARB_transform_feedback_instanced",
215 "GL_ARB_transpose_matrix", 215 "GL_ARB_transpose_matrix",
216 "GL_ARB_uniform_buffer_object", 216 "GL_ARB_uniform_buffer_object",
217 "GL_ARB_vertex_array_bgra", 217 "GL_ARB_vertex_array_bgra",
218 "GL_ARB_vertex_array_object", 218 "GL_ARB_vertex_array_object",
219 "GL_ARB_vertex_attrib_64bit", 219 "GL_ARB_vertex_attrib_64bit",
220 "GL_ARB_vertex_blend", 220 "GL_ARB_vertex_blend",
221 "GL_ARB_vertex_buffer_object", 221 "GL_ARB_vertex_buffer_object",
222 "GL_ARB_vertex_program", 222 "GL_ARB_vertex_program",
223 "GL_ARB_vertex_shader", 223 "GL_ARB_vertex_shader",
224 "GL_ARB_vertex_type_2_10_10_10_rev", 224 "GL_ARB_vertex_type_2_10_10_10_rev",
225 "GL_ARB_viewport_array", 225 "GL_ARB_viewport_array",
226 "GL_ARB_window_pos", 226 "GL_ARB_window_pos",
227 "GL_ATI_draw_buffers", 227 "GL_ATI_draw_buffers",
228 "GL_ATI_element_array", 228 "GL_ATI_element_array",
229 "GL_ATI_envmap_bumpmap", 229 "GL_ATI_envmap_bumpmap",
230 "GL_ATI_fragment_shader", 230 "GL_ATI_fragment_shader",
231 "GL_ATI_map_object_buffer", 231 "GL_ATI_map_object_buffer",
232 "GL_ATI_meminfo", 232 "GL_ATI_meminfo",
233 "GL_ATI_pixel_format_float", 233 "GL_ATI_pixel_format_float",
234 "GL_ATI_pn_triangles", 234 "GL_ATI_pn_triangles",
235 "GL_ATI_separate_stencil", 235 "GL_ATI_separate_stencil",
236 "GL_ATI_text_fragment_shader", 236 "GL_ATI_text_fragment_shader",
237 "GL_ATI_texture_env_combine3", 237 "GL_ATI_texture_env_combine3",
238 "GL_ATI_texture_float", 238 "GL_ATI_texture_float",
239 "GL_ATI_texture_mirror_once", 239 "GL_ATI_texture_mirror_once",
240 "GL_ATI_vertex_array_object", 240 "GL_ATI_vertex_array_object",
241 "GL_ATI_vertex_attrib_array_object", 241 "GL_ATI_vertex_attrib_array_object",
242 "GL_ATI_vertex_streams", 242 "GL_ATI_vertex_streams",
243 "GL_EXT_422_pixels", 243 "GL_EXT_422_pixels",
244 "GL_EXT_abgr", 244 "GL_EXT_abgr",
245 "GL_EXT_bgra", 245 "GL_EXT_bgra",
246 "GL_EXT_bindable_uniform", 246 "GL_EXT_bindable_uniform",
247 "GL_EXT_blend_color", 247 "GL_EXT_blend_color",
248 "GL_EXT_blend_equation_separate", 248 "GL_EXT_blend_equation_separate",
249 "GL_EXT_blend_func_separate", 249 "GL_EXT_blend_func_separate",
250 "GL_EXT_blend_logic_op", 250 "GL_EXT_blend_logic_op",
251 "GL_EXT_blend_minmax", 251 "GL_EXT_blend_minmax",
252 "GL_EXT_blend_subtract", 252 "GL_EXT_blend_subtract",
253 "GL_EXT_clip_volume_hint", 253 "GL_EXT_clip_volume_hint",
254 "GL_EXT_cmyka", 254 "GL_EXT_cmyka",
255 "GL_EXT_color_subtable", 255 "GL_EXT_color_subtable",
256 "GL_EXT_compiled_vertex_array", 256 "GL_EXT_compiled_vertex_array",
257 "GL_EXT_convolution", 257 "GL_EXT_convolution",
258 "GL_EXT_coordinate_frame", 258 "GL_EXT_coordinate_frame",
259 "GL_EXT_copy_texture", 259 "GL_EXT_copy_texture",
260 "GL_EXT_cull_vertex", 260 "GL_EXT_cull_vertex",
261 "GL_EXT_depth_bounds_test", 261 "GL_EXT_depth_bounds_test",
262 "GL_EXT_direct_state_access", 262 "GL_EXT_direct_state_access",
263 "GL_EXT_draw_buffers2", 263 "GL_EXT_draw_buffers2",
264 "GL_EXT_draw_instanced", 264 "GL_EXT_draw_instanced",
265 "GL_EXT_draw_range_elements", 265 "GL_EXT_draw_range_elements",
266 "GL_EXT_fog_coord", 266 "GL_EXT_fog_coord",
267 "GL_EXT_framebuffer_blit", 267 "GL_EXT_framebuffer_blit",
268 "GL_EXT_framebuffer_multisample", 268 "GL_EXT_framebuffer_multisample",
269 "GL_EXT_framebuffer_multisample_blit_scaled", 269 "GL_EXT_framebuffer_multisample_blit_scaled",
270 "GL_EXT_framebuffer_object", 270 "GL_EXT_framebuffer_object",
271 "GL_EXT_framebuffer_sRGB", 271 "GL_EXT_framebuffer_sRGB",
272 "GL_EXT_geometry_shader4", 272 "GL_EXT_geometry_shader4",
273 "GL_EXT_gpu_program_parameters", 273 "GL_EXT_gpu_program_parameters",
274 "GL_EXT_gpu_shader4", 274 "GL_EXT_gpu_shader4",
275 "GL_EXT_histogram", 275 "GL_EXT_histogram",
276 "GL_EXT_index_array_formats", 276 "GL_EXT_index_array_formats",
277 "GL_EXT_index_func", 277 "GL_EXT_index_func",
278 "GL_EXT_index_material", 278 "GL_EXT_index_material",
279 "GL_EXT_index_texture", 279 "GL_EXT_index_texture",
280 "GL_EXT_light_texture", 280 "GL_EXT_light_texture",
281 "GL_EXT_misc_attribute", 281 "GL_EXT_misc_attribute",
282 "GL_EXT_multi_draw_arrays", 282 "GL_EXT_multi_draw_arrays",
283 "GL_EXT_multisample", 283 "GL_EXT_multisample",
284 "GL_EXT_packed_depth_stencil", 284 "GL_EXT_packed_depth_stencil",
285 "GL_EXT_packed_float", 285 "GL_EXT_packed_float",
286 "GL_EXT_packed_pixels", 286 "GL_EXT_packed_pixels",
287 "GL_EXT_paletted_texture", 287 "GL_EXT_paletted_texture",
288 "GL_EXT_pixel_buffer_object", 288 "GL_EXT_pixel_buffer_object",
289 "GL_EXT_pixel_transform", 289 "GL_EXT_pixel_transform",
290 "GL_EXT_pixel_transform_color_table", 290 "GL_EXT_pixel_transform_color_table",
291 "GL_EXT_point_parameters", 291 "GL_EXT_point_parameters",
292 "GL_EXT_polygon_offset", 292 "GL_EXT_polygon_offset",
293 "GL_EXT_provoking_vertex", 293 "GL_EXT_provoking_vertex",
294 "GL_EXT_rescale_normal", 294 "GL_EXT_rescale_normal",
295 "GL_EXT_secondary_color", 295 "GL_EXT_secondary_color",
296 "GL_EXT_separate_shader_objects", 296 "GL_EXT_separate_shader_objects",
297 "GL_EXT_separate_specular_color", 297 "GL_EXT_separate_specular_color",
298 "GL_EXT_shader_image_load_store", 298 "GL_EXT_shader_image_load_store",
299 "GL_EXT_shadow_funcs", 299 "GL_EXT_shadow_funcs",
300 "GL_EXT_shared_texture_palette", 300 "GL_EXT_shared_texture_palette",
301 "GL_EXT_stencil_clear_tag", 301 "GL_EXT_stencil_clear_tag",
302 "GL_EXT_stencil_two_side", 302 "GL_EXT_stencil_two_side",
303 "GL_EXT_stencil_wrap", 303 "GL_EXT_stencil_wrap",
304 "GL_EXT_subtexture", 304 "GL_EXT_subtexture",
305 "GL_EXT_texture", 305 "GL_EXT_texture",
306 "GL_EXT_texture3D", 306 "GL_EXT_texture3D",
307 "GL_EXT_texture_array", 307 "GL_EXT_texture_array",
308 "GL_EXT_texture_buffer_object", 308 "GL_EXT_texture_buffer_object",
309 "GL_EXT_texture_compression_latc", 309 "GL_EXT_texture_compression_latc",
310 "GL_EXT_texture_compression_rgtc", 310 "GL_EXT_texture_compression_rgtc",
311 "GL_EXT_texture_compression_s3tc", 311 "GL_EXT_texture_compression_s3tc",
312 "GL_EXT_texture_cube_map", 312 "GL_EXT_texture_cube_map",
313 "GL_EXT_texture_env_add", 313 "GL_EXT_texture_env_add",
314 "GL_EXT_texture_env_combine", 314 "GL_EXT_texture_env_combine",
315 "GL_EXT_texture_env_dot3", 315 "GL_EXT_texture_env_dot3",
316 "GL_EXT_texture_filter_anisotropic", 316 "GL_EXT_texture_filter_anisotropic",
317 "GL_EXT_texture_integer", 317 "GL_EXT_texture_integer",
318 "GL_EXT_texture_lod_bias", 318 "GL_EXT_texture_lod_bias",
319 "GL_EXT_texture_mirror_clamp", 319 "GL_EXT_texture_mirror_clamp",
320 "GL_EXT_texture_object", 320 "GL_EXT_texture_object",
321 "GL_EXT_texture_perturb_normal", 321 "GL_EXT_texture_perturb_normal",
322 "GL_EXT_texture_shared_exponent", 322 "GL_EXT_texture_shared_exponent",
323 "GL_EXT_texture_snorm", 323 "GL_EXT_texture_snorm",
324 "GL_EXT_texture_sRGB", 324 "GL_EXT_texture_sRGB",
325 "GL_EXT_texture_sRGB_decode", 325 "GL_EXT_texture_sRGB_decode",
326 "GL_EXT_texture_swizzle", 326 "GL_EXT_texture_swizzle",
327 "GL_EXT_timer_query", 327 "GL_EXT_timer_query",
328 "GL_EXT_transform_feedback", 328 "GL_EXT_transform_feedback",
329 "GL_EXT_vertex_array", 329 "GL_EXT_vertex_array",
330 "GL_EXT_vertex_array_bgra", 330 "GL_EXT_vertex_array_bgra",
331 "GL_EXT_vertex_attrib_64bit", 331 "GL_EXT_vertex_attrib_64bit",
332 "GL_EXT_vertex_shader", 332 "GL_EXT_vertex_shader",
333 "GL_EXT_vertex_weighting", 333 "GL_EXT_vertex_weighting",
334 "GL_EXT_x11_sync_object", 334 "GL_EXT_x11_sync_object",
335 "GL_FfdMaskSGIX", 335 "GL_FfdMaskSGIX",
336 "GL_GREMEDY_frame_terminator", 336 "GL_GREMEDY_frame_terminator",
337 "GL_GREMEDY_string_marker", 337 "GL_GREMEDY_string_marker",
338 "GL_HP_convolution_border_modes", 338 "GL_HP_convolution_border_modes",
339 "GL_HP_image_transform", 339 "GL_HP_image_transform",
340 "GL_HP_occlusion_test", 340 "GL_HP_occlusion_test",
341 "GL_HP_texture_lighting", 341 "GL_HP_texture_lighting",
342 "GL_IBM_cull_vertex", 342 "GL_IBM_cull_vertex",
343 "GL_IBM_multimode_draw_arrays", 343 "GL_IBM_multimode_draw_arrays",
344 "GL_IBM_rasterpos_clip", 344 "GL_IBM_rasterpos_clip",
345 "GL_IBM_texture_mirrored_repeat", 345 "GL_IBM_texture_mirrored_repeat",
346 "GL_IBM_vertex_array_lists", 346 "GL_IBM_vertex_array_lists",
347 "GL_INGR_blend_func_separate", 347 "GL_INGR_blend_func_separate",
348 "GL_INGR_color_clamp", 348 "GL_INGR_color_clamp",
349 "GL_INGR_interlace_read", 349 "GL_INGR_interlace_read",
350 "GL_INGR_palette_buffer", 350 "GL_INGR_palette_buffer",
351 "GL_INTEL_parallel_arrays", 351 "GL_INTEL_parallel_arrays",
352 "GL_INTEL_texture_scissor", 352 "GL_INTEL_texture_scissor",
353 "GL_MESA_pack_invert", 353 "GL_MESA_pack_invert",
354 "GL_MESA_resize_buffers", 354 "GL_MESA_resize_buffers",
355 "GL_MESA_window_pos", 355 "GL_MESA_window_pos",
356 "GL_MESAX_texture_stack", 356 "GL_MESAX_texture_stack",
357 "GL_MESA_ycbcr_texture", 357 "GL_MESA_ycbcr_texture",
358 "GL_NV_blend_square", 358 "GL_NV_blend_square",
359 "GL_NV_conditional_render", 359 "GL_NV_conditional_render",
360 "GL_NV_copy_depth_to_color", 360 "GL_NV_copy_depth_to_color",
361 "GL_NV_copy_image", 361 "GL_NV_copy_image",
362 "GL_NV_depth_buffer_float", 362 "GL_NV_depth_buffer_float",
363 "GL_NV_depth_clamp", 363 "GL_NV_depth_clamp",
364 "GL_NV_evaluators", 364 "GL_NV_evaluators",
365 "GL_NV_explicit_multisample", 365 "GL_NV_explicit_multisample",
366 "GL_NV_fence", 366 "GL_NV_fence",
367 "GL_NV_float_buffer", 367 "GL_NV_float_buffer",
368 "GL_NV_fog_distance", 368 "GL_NV_fog_distance",
369 "GL_NV_fragment_program", 369 "GL_NV_fragment_program",
370 "GL_NV_fragment_program2", 370 "GL_NV_fragment_program2",
371 "GL_NV_fragment_program4", 371 "GL_NV_fragment_program4",
372 "GL_NV_fragment_program_option", 372 "GL_NV_fragment_program_option",
373 "GL_NV_framebuffer_multisample_coverage", 373 "GL_NV_framebuffer_multisample_coverage",
374 "GL_NV_geometry_program4", 374 "GL_NV_geometry_program4",
375 "GL_NV_geometry_shader4", 375 "GL_NV_geometry_shader4",
376 "GL_NV_gpu_program4", 376 "GL_NV_gpu_program4",
377 "GL_NV_gpu_program5", 377 "GL_NV_gpu_program5",
378 "GL_NV_gpu_shader5", 378 "GL_NV_gpu_shader5",
379 "GL_NV_half_float", 379 "GL_NV_half_float",
380 "GL_NV_light_max_exponent", 380 "GL_NV_light_max_exponent",
381 "GL_NV_multisample_coverage", 381 "GL_NV_multisample_coverage",
382 "GL_NV_multisample_filter_hint", 382 "GL_NV_multisample_filter_hint",
383 "GL_NV_occlusion_query", 383 "GL_NV_occlusion_query",
384 "GL_NV_packed_depth_stencil", 384 "GL_NV_packed_depth_stencil",
385 "GL_NV_parameter_buffer_object", 385 "GL_NV_parameter_buffer_object",
386 "GL_NV_parameter_buffer_object2", 386 "GL_NV_parameter_buffer_object2",
387 "GL_NV_pixel_data_range", 387 "GL_NV_pixel_data_range",
388 "GL_NV_point_sprite", 388 "GL_NV_point_sprite",
389 "GL_NV_present_video", 389 "GL_NV_present_video",
390 "GL_NV_primitive_restart", 390 "GL_NV_primitive_restart",
391 "GL_NV_register_combiners", 391 "GL_NV_register_combiners",
392 "GL_NV_register_combiners2", 392 "GL_NV_register_combiners2",
393 "GL_NV_shader_buffer_load", 393 "GL_NV_shader_buffer_load",
394 "GL_NV_shader_buffer_store", 394 "GL_NV_shader_buffer_store",
395 "GL_NV_tessellation_program5", 395 "GL_NV_tessellation_program5",
396 "GL_NV_texgen_emboss", 396 "GL_NV_texgen_emboss",
397 "GL_NV_texgen_reflection", 397 "GL_NV_texgen_reflection",
398 "GL_NV_texture_barrier", 398 "GL_NV_texture_barrier",
399 "GL_NV_texture_compression_vtc", 399 "GL_NV_texture_compression_vtc",
400 "GL_NV_texture_env_combine4", 400 "GL_NV_texture_env_combine4",
401 "GL_NV_texture_expand_normal", 401 "GL_NV_texture_expand_normal",
402 "GL_NV_texture_multisample", 402 "GL_NV_texture_multisample",
403 "GL_NV_texture_rectangle", 403 "GL_NV_texture_rectangle",
404 "GL_NV_texture_shader", 404 "GL_NV_texture_shader",
405 "GL_NV_texture_shader2", 405 "GL_NV_texture_shader2",
406 "GL_NV_texture_shader3", 406 "GL_NV_texture_shader3",
407 "GL_NV_transform_feedback", 407 "GL_NV_transform_feedback",
408 "GL_NV_transform_feedback2", 408 "GL_NV_transform_feedback2",
409 "GL_NV_vdpau_interop", 409 "GL_NV_vdpau_interop",
410 "GL_NV_vertex_array_range", 410 "GL_NV_vertex_array_range",
411 "GL_NV_vertex_array_range2", 411 "GL_NV_vertex_array_range2",
412 "GL_NV_vertex_attrib_integer_64bit", 412 "GL_NV_vertex_attrib_integer_64bit",
413 "GL_NV_vertex_buffer_unified_memory", 413 "GL_NV_vertex_buffer_unified_memory",
414 "GL_NV_vertex_program", 414 "GL_NV_vertex_program",
415 "GL_NV_vertex_program1_1", 415 "GL_NV_vertex_program1_1",
416 "GL_NV_vertex_program2", 416 "GL_NV_vertex_program2",
417 "GL_NV_vertex_program2_option", 417 "GL_NV_vertex_program2_option",
418 "GL_NV_vertex_program3", 418 "GL_NV_vertex_program3",
419 "GL_NV_vertex_program4", 419 "GL_NV_vertex_program4",
420 "GL_NV_video_capture", 420 "GL_NV_video_capture",
421 "GL_OES_read_format", 421 "GL_OES_read_format",
422 "GL_OML_interlace", 422 "GL_OML_interlace",
423 "GL_OML_resample", 423 "GL_OML_resample",
424 "GL_OML_subsample", 424 "GL_OML_subsample",
425 "GL_PGI_misc_hints", 425 "GL_PGI_misc_hints",
426 "GL_PGI_vertex_hints", 426 "GL_PGI_vertex_hints",
427 "GL_REND_screen_coordinates", 427 "GL_REND_screen_coordinates",
428 "GL_S3_s3tc", 428 "GL_S3_s3tc",
429 "GL_SGI_color_matrix", 429 "GL_SGI_color_matrix",
430 "GL_SGI_color_table", 430 "GL_SGI_color_table",
431 "GL_SGI_depth_pass_instrument", 431 "GL_SGI_depth_pass_instrument",
432 "GL_SGIS_detail_texture", 432 "GL_SGIS_detail_texture",
433 "GL_SGIS_fog_function", 433 "GL_SGIS_fog_function",
434 "GL_SGIS_generate_mipmap", 434 "GL_SGIS_generate_mipmap",
435 "GL_SGIS_multisample", 435 "GL_SGIS_multisample",
436 "GL_SGIS_pixel_texture", 436 "GL_SGIS_pixel_texture",
437 "GL_SGIS_point_line_texgen", 437 "GL_SGIS_point_line_texgen",
438 "GL_SGIS_point_parameters", 438 "GL_SGIS_point_parameters",
439 "GL_SGIS_sharpen_texture", 439 "GL_SGIS_sharpen_texture",
440 "GL_SGIS_texture4D", 440 "GL_SGIS_texture4D",
441 "GL_SGIS_texture_border_clamp", 441 "GL_SGIS_texture_border_clamp",
442 "GL_SGIS_texture_color_mask", 442 "GL_SGIS_texture_color_mask",
443 "GL_SGIS_texture_edge_clamp", 443 "GL_SGIS_texture_edge_clamp",
444 "GL_SGIS_texture_filter4", 444 "GL_SGIS_texture_filter4",
445 "GL_SGIS_texture_lod", 445 "GL_SGIS_texture_lod",
446 "GL_SGIS_texture_select", 446 "GL_SGIS_texture_select",
447 "GL_SGI_texture_color_table", 447 "GL_SGI_texture_color_table",
448 "GL_SGIX_async", 448 "GL_SGIX_async",
449 "GL_SGIX_async_histogram", 449 "GL_SGIX_async_histogram",
450 "GL_SGIX_async_pixel", 450 "GL_SGIX_async_pixel",
451 "GL_SGIX_blend_alpha_minmax", 451 "GL_SGIX_blend_alpha_minmax",
452 "GL_SGIX_calligraphic_fragment", 452 "GL_SGIX_calligraphic_fragment",
453 "GL_SGIX_clipmap", 453 "GL_SGIX_clipmap",
454 "GL_SGIX_convolution_accuracy", 454 "GL_SGIX_convolution_accuracy",
455 "GL_SGIX_depth_pass_instrument", 455 "GL_SGIX_depth_pass_instrument",
456 "GL_SGIX_depth_texture", 456 "GL_SGIX_depth_texture",
457 "GL_SGIX_flush_raster", 457 "GL_SGIX_flush_raster",
458 "GL_SGIX_fog_offset", 458 "GL_SGIX_fog_offset",
459 "GL_SGIX_fog_scale", 459 "GL_SGIX_fog_scale",
460 "GL_SGIX_fragment_lighting", 460 "GL_SGIX_fragment_lighting",
461 "GL_SGIX_framezoom", 461 "GL_SGIX_framezoom",
462 "GL_SGIX_igloo_interface", 462 "GL_SGIX_igloo_interface",
463 "GL_SGIX_impact_pixel_texture", 463 "GL_SGIX_impact_pixel_texture",
464 "GL_SGIX_instruments", 464 "GL_SGIX_instruments",
465 "GL_SGIX_interlace", 465 "GL_SGIX_interlace",
466 "GL_SGIX_ir_instrument1", 466 "GL_SGIX_ir_instrument1",
467 "GL_SGIX_list_priority", 467 "GL_SGIX_list_priority",
468 "GL_SGIX_pixel_texture", 468 "GL_SGIX_pixel_texture",
469 "GL_SGIX_pixel_tiles", 469 "GL_SGIX_pixel_tiles",
470 "GL_SGIX_polynomial_ffd", 470 "GL_SGIX_polynomial_ffd",
471 "GL_SGIX_reference_plane", 471 "GL_SGIX_reference_plane",
472 "GL_SGIX_resample", 472 "GL_SGIX_resample",
473 "GL_SGIX_scalebias_hint", 473 "GL_SGIX_scalebias_hint",
474 "GL_SGIX_shadow", 474 "GL_SGIX_shadow",
475 "GL_SGIX_shadow_ambient", 475 "GL_SGIX_shadow_ambient",
476 "GL_SGIX_sprite", 476 "GL_SGIX_sprite",
477 "GL_SGIX_subsample", 477 "GL_SGIX_subsample",
478 "GL_SGIX_tag_sample_buffer", 478 "GL_SGIX_tag_sample_buffer",
479 "GL_SGIX_texture_add_env", 479 "GL_SGIX_texture_add_env",
480 "GL_SGIX_texture_coordinate_clamp", 480 "GL_SGIX_texture_coordinate_clamp",
481 "GL_SGIX_texture_lod_bias", 481 "GL_SGIX_texture_lod_bias",
482 "GL_SGIX_texture_multi_buffer", 482 "GL_SGIX_texture_multi_buffer",
483 "GL_SGIX_texture_scale_bias", 483 "GL_SGIX_texture_scale_bias",
484 "GL_SGIX_texture_select", 484 "GL_SGIX_texture_select",
485 "GL_SGIX_vertex_preclip", 485 "GL_SGIX_vertex_preclip",
486 "GL_SGIX_ycrcb", 486 "GL_SGIX_ycrcb",
487 "GL_SGIX_ycrcba", 487 "GL_SGIX_ycrcba",
488 "GL_SGIX_ycrcb_subsample", 488 "GL_SGIX_ycrcb_subsample",
489 "GL_SUN_convolution_border_modes", 489 "GL_SUN_convolution_border_modes",
490 "GL_SUN_global_alpha", 490 "GL_SUN_global_alpha",
491 "GL_SUN_mesh_array", 491 "GL_SUN_mesh_array",
492 "GL_SUN_slice_accum", 492 "GL_SUN_slice_accum",
493 "GL_SUN_triangle_list", 493 "GL_SUN_triangle_list",
494 "GL_SUN_vertex", 494 "GL_SUN_vertex",
495 "GL_SUNX_constant_data", 495 "GL_SUNX_constant_data",
496 "GL_WIN_phong_shading", 496 "GL_WIN_phong_shading",
497 "GL_WIN_specular_fog", 497 "GL_WIN_specular_fog",
498 // unofficial stuff 498 // unofficial stuff
499 "GL_NVX_gpu_memory_info" 499 "GL_NVX_gpu_memory_info"
500}; 500};
501 501
502 502
503class COpenGLExtensionHandler 503class COpenGLExtensionHandler
504{ 504{
505 public: 505 public:
506 enum EOpenGLFeatures { 506 enum EOpenGLFeatures {
507 IRR_3DFX_multisample = 0, 507 IRR_3DFX_multisample = 0,
508 IRR_3DFX_tbuffer, 508 IRR_3DFX_tbuffer,
509 IRR_3DFX_texture_compression_FXT1, 509 IRR_3DFX_texture_compression_FXT1,
510 IRR_AMD_blend_minmax_factor, 510 IRR_AMD_blend_minmax_factor,
511 IRR_AMD_conservative_depth, 511 IRR_AMD_conservative_depth,
512 IRR_AMD_debug_output, 512 IRR_AMD_debug_output,
513 IRR_AMD_depth_clamp_separate, 513 IRR_AMD_depth_clamp_separate,
514 IRR_AMD_draw_buffers_blend, 514 IRR_AMD_draw_buffers_blend,
515 IRR_AMD_multi_draw_indirect, 515 IRR_AMD_multi_draw_indirect,
516 IRR_AMD_name_gen_delete, 516 IRR_AMD_name_gen_delete,
517 IRR_AMD_performance_monitor, 517 IRR_AMD_performance_monitor,
518 IRR_AMD_sample_positions, 518 IRR_AMD_sample_positions,
519 IRR_AMD_seamless_cubemap_per_texture, 519 IRR_AMD_seamless_cubemap_per_texture,
520 IRR_AMD_shader_stencil_export, 520 IRR_AMD_shader_stencil_export,
521 IRR_AMD_texture_texture4, 521 IRR_AMD_texture_texture4,
522 IRR_AMD_transform_feedback3_lines_triangles, 522 IRR_AMD_transform_feedback3_lines_triangles,
523 IRR_AMD_vertex_shader_tesselator, 523 IRR_AMD_vertex_shader_tesselator,
524 IRR_APPLE_aux_depth_stencil, 524 IRR_APPLE_aux_depth_stencil,
525 IRR_APPLE_client_storage, 525 IRR_APPLE_client_storage,
526 IRR_APPLE_element_array, 526 IRR_APPLE_element_array,
527 IRR_APPLE_fence, 527 IRR_APPLE_fence,
528 IRR_APPLE_float_pixels, 528 IRR_APPLE_float_pixels,
529 IRR_APPLE_flush_buffer_range, 529 IRR_APPLE_flush_buffer_range,
530 IRR_APPLE_object_purgeable, 530 IRR_APPLE_object_purgeable,
531 IRR_APPLE_rgb_422, 531 IRR_APPLE_rgb_422,
532 IRR_APPLE_row_bytes, 532 IRR_APPLE_row_bytes,
533 IRR_APPLE_specular_vector, 533 IRR_APPLE_specular_vector,
534 IRR_APPLE_texture_range, 534 IRR_APPLE_texture_range,
535 IRR_APPLE_transform_hint, 535 IRR_APPLE_transform_hint,
536 IRR_APPLE_vertex_array_object, 536 IRR_APPLE_vertex_array_object,
537 IRR_APPLE_vertex_array_range, 537 IRR_APPLE_vertex_array_range,
538 IRR_APPLE_vertex_program_evaluators, 538 IRR_APPLE_vertex_program_evaluators,
539 IRR_APPLE_ycbcr_422, 539 IRR_APPLE_ycbcr_422,
540 IRR_ARB_base_instance, 540 IRR_ARB_base_instance,
541 IRR_ARB_blend_func_extended, 541 IRR_ARB_blend_func_extended,
542 IRR_ARB_cl_event, 542 IRR_ARB_cl_event,
543 IRR_ARB_color_buffer_float, 543 IRR_ARB_color_buffer_float,
544 IRR_ARB_compatibility, 544 IRR_ARB_compatibility,
545 IRR_ARB_compressed_texture_pixel_storage, 545 IRR_ARB_compressed_texture_pixel_storage,
546 IRR_ARB_conservative_depth, 546 IRR_ARB_conservative_depth,
547 IRR_ARB_copy_buffer, 547 IRR_ARB_copy_buffer,
548 IRR_ARB_debug_output, 548 IRR_ARB_debug_output,
549 IRR_ARB_depth_buffer_float, 549 IRR_ARB_depth_buffer_float,
550 IRR_ARB_depth_clamp, 550 IRR_ARB_depth_clamp,
551 IRR_ARB_depth_texture, 551 IRR_ARB_depth_texture,
552 IRR_ARB_draw_buffers, 552 IRR_ARB_draw_buffers,
553 IRR_ARB_draw_buffers_blend, 553 IRR_ARB_draw_buffers_blend,
554 IRR_ARB_draw_elements_base_vertex, 554 IRR_ARB_draw_elements_base_vertex,
555 IRR_ARB_draw_indirect, 555 IRR_ARB_draw_indirect,
556 IRR_ARB_draw_instanced, 556 IRR_ARB_draw_instanced,
557 IRR_ARB_ES2_compatibility, 557 IRR_ARB_ES2_compatibility,
558 IRR_ARB_explicit_attrib_location, 558 IRR_ARB_explicit_attrib_location,
559 IRR_ARB_fragment_coord_conventions, 559 IRR_ARB_fragment_coord_conventions,
560 IRR_ARB_fragment_program, 560 IRR_ARB_fragment_program,
561 IRR_ARB_fragment_program_shadow, 561 IRR_ARB_fragment_program_shadow,
562 IRR_ARB_fragment_shader, 562 IRR_ARB_fragment_shader,
563 IRR_ARB_framebuffer_object, 563 IRR_ARB_framebuffer_object,
564 IRR_ARB_framebuffer_sRGB, 564 IRR_ARB_framebuffer_sRGB,
565 IRR_ARB_geometry_shader4, 565 IRR_ARB_geometry_shader4,
566 IRR_ARB_get_program_binary, 566 IRR_ARB_get_program_binary,
567 IRR_ARB_gpu_shader5, 567 IRR_ARB_gpu_shader5,
568 IRR_ARB_gpu_shader_fp64, 568 IRR_ARB_gpu_shader_fp64,
569 IRR_ARB_half_float_pixel, 569 IRR_ARB_half_float_pixel,
570 IRR_ARB_half_float_vertex, 570 IRR_ARB_half_float_vertex,
571 IRR_ARB_imaging, 571 IRR_ARB_imaging,
572 IRR_ARB_instanced_arrays, 572 IRR_ARB_instanced_arrays,
573 IRR_ARB_internalformat_query, 573 IRR_ARB_internalformat_query,
574 IRR_ARB_map_buffer_alignment, 574 IRR_ARB_map_buffer_alignment,
575 IRR_ARB_map_buffer_range, 575 IRR_ARB_map_buffer_range,
576 IRR_ARB_matrix_palette, 576 IRR_ARB_matrix_palette,
577 IRR_ARB_multisample, 577 IRR_ARB_multisample,
578 IRR_ARB_multitexture, 578 IRR_ARB_multitexture,
579 IRR_ARB_occlusion_query, 579 IRR_ARB_occlusion_query,
580 IRR_ARB_occlusion_query2, 580 IRR_ARB_occlusion_query2,
581 IRR_ARB_pixel_buffer_object, 581 IRR_ARB_pixel_buffer_object,
582 IRR_ARB_point_parameters, 582 IRR_ARB_point_parameters,
583 IRR_ARB_point_sprite, 583 IRR_ARB_point_sprite,
584 IRR_ARB_provoking_vertex, 584 IRR_ARB_provoking_vertex,
585 IRR_ARB_robustness, 585 IRR_ARB_robustness,
586 IRR_ARB_sample_shading, 586 IRR_ARB_sample_shading,
587 IRR_ARB_sampler_objects, 587 IRR_ARB_sampler_objects,
588 IRR_ARB_seamless_cube_map, 588 IRR_ARB_seamless_cube_map,
589 IRR_ARB_separate_shader_objects, 589 IRR_ARB_separate_shader_objects,
590 IRR_ARB_shader_atomic_counters, 590 IRR_ARB_shader_atomic_counters,
591 IRR_ARB_shader_bit_encoding, 591 IRR_ARB_shader_bit_encoding,
592 IRR_ARB_shader_image_load_store, 592 IRR_ARB_shader_image_load_store,
593 IRR_ARB_shader_objects, 593 IRR_ARB_shader_objects,
594 IRR_ARB_shader_precision, 594 IRR_ARB_shader_precision,
595 IRR_ARB_shader_stencil_export, 595 IRR_ARB_shader_stencil_export,
596 IRR_ARB_shader_subroutine, 596 IRR_ARB_shader_subroutine,
597 IRR_ARB_shader_texture_lod, 597 IRR_ARB_shader_texture_lod,
598 IRR_ARB_shading_language_100, 598 IRR_ARB_shading_language_100,
599 IRR_ARB_shading_language_420pack, 599 IRR_ARB_shading_language_420pack,
600 IRR_ARB_shading_language_include, 600 IRR_ARB_shading_language_include,
601 IRR_ARB_shading_language_packing, 601 IRR_ARB_shading_language_packing,
602 IRR_ARB_shadow, 602 IRR_ARB_shadow,
603 IRR_ARB_shadow_ambient, 603 IRR_ARB_shadow_ambient,
604 IRR_ARB_sync, 604 IRR_ARB_sync,
605 IRR_ARB_tessellation_shader, 605 IRR_ARB_tessellation_shader,
606 IRR_ARB_texture_border_clamp, 606 IRR_ARB_texture_border_clamp,
607 IRR_ARB_texture_buffer_object, 607 IRR_ARB_texture_buffer_object,
608 IRR_ARB_texture_buffer_object_rgb32, 608 IRR_ARB_texture_buffer_object_rgb32,
609 IRR_ARB_texture_compression, 609 IRR_ARB_texture_compression,
610 IRR_ARB_texture_compression_bptc, 610 IRR_ARB_texture_compression_bptc,
611 IRR_ARB_texture_compression_rgtc, 611 IRR_ARB_texture_compression_rgtc,
612 IRR_ARB_texture_cube_map, 612 IRR_ARB_texture_cube_map,
613 IRR_ARB_texture_cube_map_array, 613 IRR_ARB_texture_cube_map_array,
614 IRR_ARB_texture_env_add, 614 IRR_ARB_texture_env_add,
615 IRR_ARB_texture_env_combine, 615 IRR_ARB_texture_env_combine,
616 IRR_ARB_texture_env_crossbar, 616 IRR_ARB_texture_env_crossbar,
617 IRR_ARB_texture_env_dot3, 617 IRR_ARB_texture_env_dot3,
618 IRR_ARB_texture_float, 618 IRR_ARB_texture_float,
619 IRR_ARB_texture_gather, 619 IRR_ARB_texture_gather,
620 IRR_ARB_texture_mirrored_repeat, 620 IRR_ARB_texture_mirrored_repeat,
621 IRR_ARB_texture_multisample, 621 IRR_ARB_texture_multisample,
622 IRR_ARB_texture_non_power_of_two, 622 IRR_ARB_texture_non_power_of_two,
623 IRR_ARB_texture_query_lod, 623 IRR_ARB_texture_query_lod,
624 IRR_ARB_texture_rectangle, 624 IRR_ARB_texture_rectangle,
625 IRR_ARB_texture_rg, 625 IRR_ARB_texture_rg,
626 IRR_ARB_texture_rgb10_a2ui, 626 IRR_ARB_texture_rgb10_a2ui,
627 IRR_ARB_texture_storage, 627 IRR_ARB_texture_storage,
628 IRR_ARB_texture_swizzle, 628 IRR_ARB_texture_swizzle,
629 IRR_ARB_timer_query, 629 IRR_ARB_timer_query,
630 IRR_ARB_transform_feedback2, 630 IRR_ARB_transform_feedback2,
631 IRR_ARB_transform_feedback3, 631 IRR_ARB_transform_feedback3,
632 IRR_ARB_transform_feedback_instanced, 632 IRR_ARB_transform_feedback_instanced,
633 IRR_ARB_transpose_matrix, 633 IRR_ARB_transpose_matrix,
634 IRR_ARB_uniform_buffer_object, 634 IRR_ARB_uniform_buffer_object,
635 IRR_ARB_vertex_array_bgra, 635 IRR_ARB_vertex_array_bgra,
636 IRR_ARB_vertex_array_object, 636 IRR_ARB_vertex_array_object,
637 IRR_ARB_vertex_attrib_64bit, 637 IRR_ARB_vertex_attrib_64bit,
638 IRR_ARB_vertex_blend, 638 IRR_ARB_vertex_blend,
639 IRR_ARB_vertex_buffer_object, 639 IRR_ARB_vertex_buffer_object,
640 IRR_ARB_vertex_program, 640 IRR_ARB_vertex_program,
641 IRR_ARB_vertex_shader, 641 IRR_ARB_vertex_shader,
642 IRR_ARB_vertex_type_2_10_10_10_rev, 642 IRR_ARB_vertex_type_2_10_10_10_rev,
643 IRR_ARB_viewport_array, 643 IRR_ARB_viewport_array,
644 IRR_ARB_window_pos, 644 IRR_ARB_window_pos,
645 IRR_ATI_draw_buffers, 645 IRR_ATI_draw_buffers,
646 IRR_ATI_element_array, 646 IRR_ATI_element_array,
647 IRR_ATI_envmap_bumpmap, 647 IRR_ATI_envmap_bumpmap,
648 IRR_ATI_fragment_shader, 648 IRR_ATI_fragment_shader,
649 IRR_ATI_map_object_buffer, 649 IRR_ATI_map_object_buffer,
650 IRR_ATI_meminfo, 650 IRR_ATI_meminfo,
651 IRR_ATI_pixel_format_float, 651 IRR_ATI_pixel_format_float,
652 IRR_ATI_pn_triangles, 652 IRR_ATI_pn_triangles,
653 IRR_ATI_separate_stencil, 653 IRR_ATI_separate_stencil,
654 IRR_ATI_text_fragment_shader, 654 IRR_ATI_text_fragment_shader,
655 IRR_ATI_texture_env_combine3, 655 IRR_ATI_texture_env_combine3,
656 IRR_ATI_texture_float, 656 IRR_ATI_texture_float,
657 IRR_ATI_texture_mirror_once, 657 IRR_ATI_texture_mirror_once,
658 IRR_ATI_vertex_array_object, 658 IRR_ATI_vertex_array_object,
659 IRR_ATI_vertex_attrib_array_object, 659 IRR_ATI_vertex_attrib_array_object,
660 IRR_ATI_vertex_streams, 660 IRR_ATI_vertex_streams,
661 IRR_EXT_422_pixels, 661 IRR_EXT_422_pixels,
662 IRR_EXT_abgr, 662 IRR_EXT_abgr,
663 IRR_EXT_bgra, 663 IRR_EXT_bgra,
664 IRR_EXT_bindable_uniform, 664 IRR_EXT_bindable_uniform,
665 IRR_EXT_blend_color, 665 IRR_EXT_blend_color,
666 IRR_EXT_blend_equation_separate, 666 IRR_EXT_blend_equation_separate,
667 IRR_EXT_blend_func_separate, 667 IRR_EXT_blend_func_separate,
668 IRR_EXT_blend_logic_op, 668 IRR_EXT_blend_logic_op,
669 IRR_EXT_blend_minmax, 669 IRR_EXT_blend_minmax,
670 IRR_EXT_blend_subtract, 670 IRR_EXT_blend_subtract,
671 IRR_EXT_clip_volume_hint, 671 IRR_EXT_clip_volume_hint,
672 IRR_EXT_cmyka, 672 IRR_EXT_cmyka,
673 IRR_EXT_color_subtable, 673 IRR_EXT_color_subtable,
674 IRR_EXT_compiled_vertex_array, 674 IRR_EXT_compiled_vertex_array,
675 IRR_EXT_convolution, 675 IRR_EXT_convolution,
676 IRR_EXT_coordinate_frame, 676 IRR_EXT_coordinate_frame,
677 IRR_EXT_copy_texture, 677 IRR_EXT_copy_texture,
678 IRR_EXT_cull_vertex, 678 IRR_EXT_cull_vertex,
679 IRR_EXT_depth_bounds_test, 679 IRR_EXT_depth_bounds_test,
680 IRR_EXT_direct_state_access, 680 IRR_EXT_direct_state_access,
681 IRR_EXT_draw_buffers2, 681 IRR_EXT_draw_buffers2,
682 IRR_EXT_draw_instanced, 682 IRR_EXT_draw_instanced,
683 IRR_EXT_draw_range_elements, 683 IRR_EXT_draw_range_elements,
684 IRR_EXT_fog_coord, 684 IRR_EXT_fog_coord,
685 IRR_EXT_framebuffer_blit, 685 IRR_EXT_framebuffer_blit,
686 IRR_EXT_framebuffer_multisample, 686 IRR_EXT_framebuffer_multisample,
687 IRR_EXT_framebuffer_multisample_blit_scaled, 687 IRR_EXT_framebuffer_multisample_blit_scaled,
688 IRR_EXT_framebuffer_object, 688 IRR_EXT_framebuffer_object,
689 IRR_EXT_framebuffer_sRGB, 689 IRR_EXT_framebuffer_sRGB,
690 IRR_EXT_geometry_shader4, 690 IRR_EXT_geometry_shader4,
691 IRR_EXT_gpu_program_parameters, 691 IRR_EXT_gpu_program_parameters,
692 IRR_EXT_gpu_shader4, 692 IRR_EXT_gpu_shader4,
693 IRR_EXT_histogram, 693 IRR_EXT_histogram,
694 IRR_EXT_index_array_formats, 694 IRR_EXT_index_array_formats,
695 IRR_EXT_index_func, 695 IRR_EXT_index_func,
696 IRR_EXT_index_material, 696 IRR_EXT_index_material,
697 IRR_EXT_index_texture, 697 IRR_EXT_index_texture,
698 IRR_EXT_light_texture, 698 IRR_EXT_light_texture,
699 IRR_EXT_misc_attribute, 699 IRR_EXT_misc_attribute,
700 IRR_EXT_multi_draw_arrays, 700 IRR_EXT_multi_draw_arrays,
701 IRR_EXT_multisample, 701 IRR_EXT_multisample,
702 IRR_EXT_packed_depth_stencil, 702 IRR_EXT_packed_depth_stencil,
703 IRR_EXT_packed_float, 703 IRR_EXT_packed_float,
704 IRR_EXT_packed_pixels, 704 IRR_EXT_packed_pixels,
705 IRR_EXT_paletted_texture, 705 IRR_EXT_paletted_texture,
706 IRR_EXT_pixel_buffer_object, 706 IRR_EXT_pixel_buffer_object,
707 IRR_EXT_pixel_transform, 707 IRR_EXT_pixel_transform,
708 IRR_EXT_pixel_transform_color_table, 708 IRR_EXT_pixel_transform_color_table,
709 IRR_EXT_point_parameters, 709 IRR_EXT_point_parameters,
710 IRR_EXT_polygon_offset, 710 IRR_EXT_polygon_offset,
711 IRR_EXT_provoking_vertex, 711 IRR_EXT_provoking_vertex,
712 IRR_EXT_rescale_normal, 712 IRR_EXT_rescale_normal,
713 IRR_EXT_secondary_color, 713 IRR_EXT_secondary_color,
714 IRR_EXT_separate_shader_objects, 714 IRR_EXT_separate_shader_objects,
715 IRR_EXT_separate_specular_color, 715 IRR_EXT_separate_specular_color,
716 IRR_EXT_shader_image_load_store, 716 IRR_EXT_shader_image_load_store,
717 IRR_EXT_shadow_funcs, 717 IRR_EXT_shadow_funcs,
718 IRR_EXT_shared_texture_palette, 718 IRR_EXT_shared_texture_palette,
719 IRR_EXT_stencil_clear_tag, 719 IRR_EXT_stencil_clear_tag,
720 IRR_EXT_stencil_two_side, 720 IRR_EXT_stencil_two_side,
721 IRR_EXT_stencil_wrap, 721 IRR_EXT_stencil_wrap,
722 IRR_EXT_subtexture, 722 IRR_EXT_subtexture,
723 IRR_EXT_texture, 723 IRR_EXT_texture,
724 IRR_EXT_texture3D, 724 IRR_EXT_texture3D,
725 IRR_EXT_texture_array, 725 IRR_EXT_texture_array,
726 IRR_EXT_texture_buffer_object, 726 IRR_EXT_texture_buffer_object,
727 IRR_EXT_texture_compression_latc, 727 IRR_EXT_texture_compression_latc,
728 IRR_EXT_texture_compression_rgtc, 728 IRR_EXT_texture_compression_rgtc,
729 IRR_EXT_texture_compression_s3tc, 729 IRR_EXT_texture_compression_s3tc,
730 IRR_EXT_texture_cube_map, 730 IRR_EXT_texture_cube_map,
731 IRR_EXT_texture_env_add, 731 IRR_EXT_texture_env_add,
732 IRR_EXT_texture_env_combine, 732 IRR_EXT_texture_env_combine,
733 IRR_EXT_texture_env_dot3, 733 IRR_EXT_texture_env_dot3,
734 IRR_EXT_texture_filter_anisotropic, 734 IRR_EXT_texture_filter_anisotropic,
735 IRR_EXT_texture_integer, 735 IRR_EXT_texture_integer,
736 IRR_EXT_texture_lod_bias, 736 IRR_EXT_texture_lod_bias,
737 IRR_EXT_texture_mirror_clamp, 737 IRR_EXT_texture_mirror_clamp,
738 IRR_EXT_texture_object, 738 IRR_EXT_texture_object,
739 IRR_EXT_texture_perturb_normal, 739 IRR_EXT_texture_perturb_normal,
740 IRR_EXT_texture_shared_exponent, 740 IRR_EXT_texture_shared_exponent,
741 IRR_EXT_texture_snorm, 741 IRR_EXT_texture_snorm,
742 IRR_EXT_texture_sRGB, 742 IRR_EXT_texture_sRGB,
743 IRR_EXT_texture_sRGB_decode, 743 IRR_EXT_texture_sRGB_decode,
744 IRR_EXT_texture_swizzle, 744 IRR_EXT_texture_swizzle,
745 IRR_EXT_timer_query, 745 IRR_EXT_timer_query,
746 IRR_EXT_transform_feedback, 746 IRR_EXT_transform_feedback,
747 IRR_EXT_vertex_array, 747 IRR_EXT_vertex_array,
748 IRR_EXT_vertex_array_bgra, 748 IRR_EXT_vertex_array_bgra,
749 IRR_EXT_vertex_attrib_64bit, 749 IRR_EXT_vertex_attrib_64bit,
750 IRR_EXT_vertex_shader, 750 IRR_EXT_vertex_shader,
751 IRR_EXT_vertex_weighting, 751 IRR_EXT_vertex_weighting,
752 IRR_EXT_x11_sync_object, 752 IRR_EXT_x11_sync_object,
753 IRR_FfdMaskSGIX, 753 IRR_FfdMaskSGIX,
754 IRR_GREMEDY_frame_terminator, 754 IRR_GREMEDY_frame_terminator,
755 IRR_GREMEDY_string_marker, 755 IRR_GREMEDY_string_marker,
756 IRR_HP_convolution_border_modes, 756 IRR_HP_convolution_border_modes,
757 IRR_HP_image_transform, 757 IRR_HP_image_transform,
758 IRR_HP_occlusion_test, 758 IRR_HP_occlusion_test,
759 IRR_HP_texture_lighting, 759 IRR_HP_texture_lighting,
760 IRR_IBM_cull_vertex, 760 IRR_IBM_cull_vertex,
761 IRR_IBM_multimode_draw_arrays, 761 IRR_IBM_multimode_draw_arrays,
762 IRR_IBM_rasterpos_clip, 762 IRR_IBM_rasterpos_clip,
763 IRR_IBM_texture_mirrored_repeat, 763 IRR_IBM_texture_mirrored_repeat,
764 IRR_IBM_vertex_array_lists, 764 IRR_IBM_vertex_array_lists,
765 IRR_INGR_blend_func_separate, 765 IRR_INGR_blend_func_separate,
766 IRR_INGR_color_clamp, 766 IRR_INGR_color_clamp,
767 IRR_INGR_interlace_read, 767 IRR_INGR_interlace_read,
768 IRR_INGR_palette_buffer, 768 IRR_INGR_palette_buffer,
769 IRR_INTEL_parallel_arrays, 769 IRR_INTEL_parallel_arrays,
770 IRR_INTEL_texture_scissor, 770 IRR_INTEL_texture_scissor,
771 IRR_MESA_pack_invert, 771 IRR_MESA_pack_invert,
772 IRR_MESA_resize_buffers, 772 IRR_MESA_resize_buffers,
773 IRR_MESA_window_pos, 773 IRR_MESA_window_pos,
774 IRR_MESAX_texture_stack, 774 IRR_MESAX_texture_stack,
775 IRR_MESA_ycbcr_texture, 775 IRR_MESA_ycbcr_texture,
776 IRR_NV_blend_square, 776 IRR_NV_blend_square,
777 IRR_NV_conditional_render, 777 IRR_NV_conditional_render,
778 IRR_NV_copy_depth_to_color, 778 IRR_NV_copy_depth_to_color,
779 IRR_NV_copy_image, 779 IRR_NV_copy_image,
780 IRR_NV_depth_buffer_float, 780 IRR_NV_depth_buffer_float,
781 IRR_NV_depth_clamp, 781 IRR_NV_depth_clamp,
782 IRR_NV_evaluators, 782 IRR_NV_evaluators,
783 IRR_NV_explicit_multisample, 783 IRR_NV_explicit_multisample,
784 IRR_NV_fence, 784 IRR_NV_fence,
785 IRR_NV_float_buffer, 785 IRR_NV_float_buffer,
786 IRR_NV_fog_distance, 786 IRR_NV_fog_distance,
787 IRR_NV_fragment_program, 787 IRR_NV_fragment_program,
788 IRR_NV_fragment_program2, 788 IRR_NV_fragment_program2,
789 IRR_NV_fragment_program4, 789 IRR_NV_fragment_program4,
790 IRR_NV_fragment_program_option, 790 IRR_NV_fragment_program_option,
791 IRR_NV_framebuffer_multisample_coverage, 791 IRR_NV_framebuffer_multisample_coverage,
792 IRR_NV_geometry_program4, 792 IRR_NV_geometry_program4,
793 IRR_NV_geometry_shader4, 793 IRR_NV_geometry_shader4,
794 IRR_NV_gpu_program4, 794 IRR_NV_gpu_program4,
795 IRR_NV_gpu_program5, 795 IRR_NV_gpu_program5,
796 IRR_NV_gpu_shader5, 796 IRR_NV_gpu_shader5,
797 IRR_NV_half_float, 797 IRR_NV_half_float,
798 IRR_NV_light_max_exponent, 798 IRR_NV_light_max_exponent,
799 IRR_NV_multisample_coverage, 799 IRR_NV_multisample_coverage,
800 IRR_NV_multisample_filter_hint, 800 IRR_NV_multisample_filter_hint,
801 IRR_NV_occlusion_query, 801 IRR_NV_occlusion_query,
802 IRR_NV_packed_depth_stencil, 802 IRR_NV_packed_depth_stencil,
803 IRR_NV_parameter_buffer_object, 803 IRR_NV_parameter_buffer_object,
804 IRR_NV_parameter_buffer_object2, 804 IRR_NV_parameter_buffer_object2,
805 IRR_NV_pixel_data_range, 805 IRR_NV_pixel_data_range,
806 IRR_NV_point_sprite, 806 IRR_NV_point_sprite,
807 IRR_NV_present_video, 807 IRR_NV_present_video,
808 IRR_NV_primitive_restart, 808 IRR_NV_primitive_restart,
809 IRR_NV_register_combiners, 809 IRR_NV_register_combiners,
810 IRR_NV_register_combiners2, 810 IRR_NV_register_combiners2,
811 IRR_NV_shader_buffer_load, 811 IRR_NV_shader_buffer_load,
812 IRR_NV_shader_buffer_store, 812 IRR_NV_shader_buffer_store,
813 IRR_NV_tessellation_program5, 813 IRR_NV_tessellation_program5,
814 IRR_NV_texgen_emboss, 814 IRR_NV_texgen_emboss,
815 IRR_NV_texgen_reflection, 815 IRR_NV_texgen_reflection,
816 IRR_NV_texture_barrier, 816 IRR_NV_texture_barrier,
817 IRR_NV_texture_compression_vtc, 817 IRR_NV_texture_compression_vtc,
818 IRR_NV_texture_env_combine4, 818 IRR_NV_texture_env_combine4,
819 IRR_NV_texture_expand_normal, 819 IRR_NV_texture_expand_normal,
820 IRR_NV_texture_multisample, 820 IRR_NV_texture_multisample,
821 IRR_NV_texture_rectangle, 821 IRR_NV_texture_rectangle,
822 IRR_NV_texture_shader, 822 IRR_NV_texture_shader,
823 IRR_NV_texture_shader2, 823 IRR_NV_texture_shader2,
824 IRR_NV_texture_shader3, 824 IRR_NV_texture_shader3,
825 IRR_NV_transform_feedback, 825 IRR_NV_transform_feedback,
826 IRR_NV_transform_feedback2, 826 IRR_NV_transform_feedback2,
827 IRR_NV_vdpau_interop, 827 IRR_NV_vdpau_interop,
828 IRR_NV_vertex_array_range, 828 IRR_NV_vertex_array_range,
829 IRR_NV_vertex_array_range2, 829 IRR_NV_vertex_array_range2,
830 IRR_NV_vertex_attrib_integer_64bit, 830 IRR_NV_vertex_attrib_integer_64bit,
831 IRR_NV_vertex_buffer_unified_memory, 831 IRR_NV_vertex_buffer_unified_memory,
832 IRR_NV_vertex_program, 832 IRR_NV_vertex_program,
833 IRR_NV_vertex_program1_1, 833 IRR_NV_vertex_program1_1,
834 IRR_NV_vertex_program2, 834 IRR_NV_vertex_program2,
835 IRR_NV_vertex_program2_option, 835 IRR_NV_vertex_program2_option,
836 IRR_NV_vertex_program3, 836 IRR_NV_vertex_program3,
837 IRR_NV_vertex_program4, 837 IRR_NV_vertex_program4,
838 IRR_NV_video_capture, 838 IRR_NV_video_capture,
839 IRR_OES_read_format, 839 IRR_OES_read_format,
840 IRR_OML_interlace, 840 IRR_OML_interlace,
841 IRR_OML_resample, 841 IRR_OML_resample,
842 IRR_OML_subsample, 842 IRR_OML_subsample,
843 IRR_PGI_misc_hints, 843 IRR_PGI_misc_hints,
844 IRR_PGI_vertex_hints, 844 IRR_PGI_vertex_hints,
845 IRR_REND_screen_coordinates, 845 IRR_REND_screen_coordinates,
846 IRR_S3_s3tc, 846 IRR_S3_s3tc,
847 IRR_SGI_color_matrix, 847 IRR_SGI_color_matrix,
848 IRR_SGI_color_table, 848 IRR_SGI_color_table,
849 IRR_SGI_depth_pass_instrument, 849 IRR_SGI_depth_pass_instrument,
850 IRR_SGIS_detail_texture, 850 IRR_SGIS_detail_texture,
851 IRR_SGIS_fog_function, 851 IRR_SGIS_fog_function,
852 IRR_SGIS_generate_mipmap, 852 IRR_SGIS_generate_mipmap,
853 IRR_SGIS_multisample, 853 IRR_SGIS_multisample,
854 IRR_SGIS_pixel_texture, 854 IRR_SGIS_pixel_texture,
855 IRR_SGIS_point_line_texgen, 855 IRR_SGIS_point_line_texgen,
856 IRR_SGIS_point_parameters, 856 IRR_SGIS_point_parameters,
857 IRR_SGIS_sharpen_texture, 857 IRR_SGIS_sharpen_texture,
858 IRR_SGIS_texture4D, 858 IRR_SGIS_texture4D,
859 IRR_SGIS_texture_border_clamp, 859 IRR_SGIS_texture_border_clamp,
860 IRR_SGIS_texture_color_mask, 860 IRR_SGIS_texture_color_mask,
861 IRR_SGIS_texture_edge_clamp, 861 IRR_SGIS_texture_edge_clamp,
862 IRR_SGIS_texture_filter4, 862 IRR_SGIS_texture_filter4,
863 IRR_SGIS_texture_lod, 863 IRR_SGIS_texture_lod,
864 IRR_SGIS_texture_select, 864 IRR_SGIS_texture_select,
865 IRR_SGI_texture_color_table, 865 IRR_SGI_texture_color_table,
866 IRR_SGIX_async, 866 IRR_SGIX_async,
867 IRR_SGIX_async_histogram, 867 IRR_SGIX_async_histogram,
868 IRR_SGIX_async_pixel, 868 IRR_SGIX_async_pixel,
869 IRR_SGIX_blend_alpha_minmax, 869 IRR_SGIX_blend_alpha_minmax,
870 IRR_SGIX_calligraphic_fragment, 870 IRR_SGIX_calligraphic_fragment,
871 IRR_SGIX_clipmap, 871 IRR_SGIX_clipmap,
872 IRR_SGIX_convolution_accuracy, 872 IRR_SGIX_convolution_accuracy,
873 IRR_SGIX_depth_pass_instrument, 873 IRR_SGIX_depth_pass_instrument,
874 IRR_SGIX_depth_texture, 874 IRR_SGIX_depth_texture,
875 IRR_SGIX_flush_raster, 875 IRR_SGIX_flush_raster,
876 IRR_SGIX_fog_offset, 876 IRR_SGIX_fog_offset,
877 IRR_SGIX_fog_scale, 877 IRR_SGIX_fog_scale,
878 IRR_SGIX_fragment_lighting, 878 IRR_SGIX_fragment_lighting,
879 IRR_SGIX_framezoom, 879 IRR_SGIX_framezoom,
880 IRR_SGIX_igloo_interface, 880 IRR_SGIX_igloo_interface,
881 IRR_SGIX_impact_pixel_texture, 881 IRR_SGIX_impact_pixel_texture,
882 IRR_SGIX_instruments, 882 IRR_SGIX_instruments,
883 IRR_SGIX_interlace, 883 IRR_SGIX_interlace,
884 IRR_SGIX_ir_instrument1, 884 IRR_SGIX_ir_instrument1,
885 IRR_SGIX_list_priority, 885 IRR_SGIX_list_priority,
886 IRR_SGIX_pixel_texture, 886 IRR_SGIX_pixel_texture,
887 IRR_SGIX_pixel_tiles, 887 IRR_SGIX_pixel_tiles,
888 IRR_SGIX_polynomial_ffd, 888 IRR_SGIX_polynomial_ffd,
889 IRR_SGIX_reference_plane, 889 IRR_SGIX_reference_plane,
890 IRR_SGIX_resample, 890 IRR_SGIX_resample,
891 IRR_SGIX_scalebias_hint, 891 IRR_SGIX_scalebias_hint,
892 IRR_SGIX_shadow, 892 IRR_SGIX_shadow,
893 IRR_SGIX_shadow_ambient, 893 IRR_SGIX_shadow_ambient,
894 IRR_SGIX_sprite, 894 IRR_SGIX_sprite,
895 IRR_SGIX_subsample, 895 IRR_SGIX_subsample,
896 IRR_SGIX_tag_sample_buffer, 896 IRR_SGIX_tag_sample_buffer,
897 IRR_SGIX_texture_add_env, 897 IRR_SGIX_texture_add_env,
898 IRR_SGIX_texture_coordinate_clamp, 898 IRR_SGIX_texture_coordinate_clamp,
899 IRR_SGIX_texture_lod_bias, 899 IRR_SGIX_texture_lod_bias,
900 IRR_SGIX_texture_multi_buffer, 900 IRR_SGIX_texture_multi_buffer,
901 IRR_SGIX_texture_scale_bias, 901 IRR_SGIX_texture_scale_bias,
902 IRR_SGIX_texture_select, 902 IRR_SGIX_texture_select,
903 IRR_SGIX_vertex_preclip, 903 IRR_SGIX_vertex_preclip,
904 IRR_SGIX_ycrcb, 904 IRR_SGIX_ycrcb,
905 IRR_SGIX_ycrcba, 905 IRR_SGIX_ycrcba,
906 IRR_SGIX_ycrcb_subsample, 906 IRR_SGIX_ycrcb_subsample,
907 IRR_SUN_convolution_border_modes, 907 IRR_SUN_convolution_border_modes,
908 IRR_SUN_global_alpha, 908 IRR_SUN_global_alpha,
909 IRR_SUN_mesh_array, 909 IRR_SUN_mesh_array,
910 IRR_SUN_slice_accum, 910 IRR_SUN_slice_accum,
911 IRR_SUN_triangle_list, 911 IRR_SUN_triangle_list,
912 IRR_SUN_vertex, 912 IRR_SUN_vertex,
913 IRR_SUNX_constant_data, 913 IRR_SUNX_constant_data,
914 IRR_WIN_phong_shading, 914 IRR_WIN_phong_shading,
915 IRR_WIN_specular_fog, 915 IRR_WIN_specular_fog,
916 IRR_NVX_gpu_memory_info, 916 IRR_NVX_gpu_memory_info,
917 IRR_OpenGL_Feature_Count 917 IRR_OpenGL_Feature_Count
918 }; 918 };
919 919
920 920
921 // constructor 921 // constructor
922 COpenGLExtensionHandler(); 922 COpenGLExtensionHandler();
923 923
924 // deferred initialization 924 // deferred initialization
925 void initExtensions(bool stencilBuffer); 925 void initExtensions(bool stencilBuffer);
926 926
927 //! queries the features of the driver, returns true if feature is available 927 //! queries the features of the driver, returns true if feature is available
928 bool queryFeature(E_VIDEO_DRIVER_FEATURE feature) const; 928 bool queryFeature(E_VIDEO_DRIVER_FEATURE feature) const;
929 929
930 //! queries the features of the driver, returns true if feature is available 930 //! queries the features of the driver, returns true if feature is available
931 bool queryOpenGLFeature(EOpenGLFeatures feature) const 931 bool queryOpenGLFeature(EOpenGLFeatures feature) const
932 { 932 {
933 return FeatureAvailable[feature]; 933 return FeatureAvailable[feature];
934 } 934 }
935 935
936 //! show all features with availablity 936 //! show all features with availablity
937 void dump() const; 937 void dump() const;
938 938
939 void dumpFramebufferFormats() const; 939 void dumpFramebufferFormats() const;
940 940
941 // Some variables for properties 941 // Some variables for properties
942 bool StencilBuffer; 942 bool StencilBuffer;
943 bool MultiTextureExtension; 943 bool MultiTextureExtension;
944 bool TextureCompressionExtension; 944 bool TextureCompressionExtension;
945 945
946 // Some non-boolean properties 946 // Some non-boolean properties
947 //! Maxmimum texture layers supported by the fixed pipeline 947 //! Maxmimum texture layers supported by the fixed pipeline
948 u8 MaxSupportedTextures; 948 u8 MaxSupportedTextures;
949 //! Maxmimum texture layers supported by the engine 949 //! Maxmimum texture layers supported by the engine
950 u8 MaxTextureUnits; 950 u8 MaxTextureUnits;
951 //! Maximum hardware lights supported 951 //! Maximum hardware lights supported
952 u8 MaxLights; 952 u8 MaxLights;
953 //! Maximal Anisotropy 953 //! Maximal Anisotropy
954 u8 MaxAnisotropy; 954 u8 MaxAnisotropy;
955 //! Number of user clipplanes 955 //! Number of user clipplanes
956 u8 MaxUserClipPlanes; 956 u8 MaxUserClipPlanes;
957 //! Number of auxiliary buffers 957 //! Number of auxiliary buffers
958 u8 MaxAuxBuffers; 958 u8 MaxAuxBuffers;
959 //! Number of rendertargets available as MRTs 959 //! Number of rendertargets available as MRTs
960 u8 MaxMultipleRenderTargets; 960 u8 MaxMultipleRenderTargets;
961 //! Optimal number of indices per meshbuffer 961 //! Optimal number of indices per meshbuffer
962 u32 MaxIndices; 962 u32 MaxIndices;
963 //! Maximal texture dimension 963 //! Maximal texture dimension
964 u32 MaxTextureSize; 964 u32 MaxTextureSize;
965 //! Maximal vertices handled by geometry shaders 965 //! Maximal vertices handled by geometry shaders
966 u32 MaxGeometryVerticesOut; 966 u32 MaxGeometryVerticesOut;
967 //! Maximal LOD Bias 967 //! Maximal LOD Bias
968 f32 MaxTextureLODBias; 968 f32 MaxTextureLODBias;
969 //! Minimal and maximal supported thickness for lines without smoothing 969 //! Minimal and maximal supported thickness for lines without smoothing
970 GLfloat DimAliasedLine[2]; 970 GLfloat DimAliasedLine[2];
971 //! Minimal and maximal supported thickness for points without smoothing 971 //! Minimal and maximal supported thickness for points without smoothing
972 GLfloat DimAliasedPoint[2]; 972 GLfloat DimAliasedPoint[2];
973 //! Minimal and maximal supported thickness for lines with smoothing 973 //! Minimal and maximal supported thickness for lines with smoothing
974 GLfloat DimSmoothedLine[2]; 974 GLfloat DimSmoothedLine[2];
975 //! Minimal and maximal supported thickness for points with smoothing 975 //! Minimal and maximal supported thickness for points with smoothing
976 GLfloat DimSmoothedPoint[2]; 976 GLfloat DimSmoothedPoint[2];
977 977
978 //! OpenGL version as Integer: 100*Major+Minor, i.e. 2.1 becomes 201 978 //! OpenGL version as Integer: 100*Major+Minor, i.e. 2.1 becomes 201
979 u16 Version; 979 u16 Version;
980 //! GLSL version as Integer: 100*Major+Minor 980 //! GLSL version as Integer: 100*Major+Minor
981 u16 ShaderLanguageVersion; 981 u16 ShaderLanguageVersion;
982 982
983 bool OcclusionQuerySupport; 983 bool OcclusionQuerySupport;
984 984
985 // public access to the (loaded) extensions. 985 // public access to the (loaded) extensions.
986 // general functions 986 // general functions
987 void extGlActiveTexture(GLenum texture); 987 void extGlActiveTexture(GLenum texture);
988 void extGlClientActiveTexture(GLenum texture); 988 void extGlClientActiveTexture(GLenum texture);
989 void extGlPointParameterf(GLint loc, GLfloat f); 989 void extGlPointParameterf(GLint loc, GLfloat f);
990 void extGlPointParameterfv(GLint loc, const GLfloat *v); 990 void extGlPointParameterfv(GLint loc, const GLfloat *v);
991 void extGlStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); 991 void extGlStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
992 void extGlStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass); 992 void extGlStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
993 void extGlCompressedTexImage2D(GLenum target, GLint level, 993 void extGlCompressedTexImage2D(GLenum target, GLint level,
994 GLenum internalformat, GLsizei width, GLsizei height, 994 GLenum internalformat, GLsizei width, GLsizei height,
995 GLint border, GLsizei imageSize, const void* data); 995 GLint border, GLsizei imageSize, const void* data);
996 996
997 // shader programming 997 // shader programming
998 void extGlGenPrograms(GLsizei n, GLuint *programs); 998 void extGlGenPrograms(GLsizei n, GLuint *programs);
999 void extGlBindProgram(GLenum target, GLuint program); 999 void extGlBindProgram(GLenum target, GLuint program);
1000 void extGlProgramString(GLenum target, GLenum format, GLsizei len, const GLvoid *string); 1000 void extGlProgramString(GLenum target, GLenum format, GLsizei len, const GLvoid *string);
1001 void extGlLoadProgram(GLenum target, GLuint id, GLsizei len, const GLubyte *string); 1001 void extGlLoadProgram(GLenum target, GLuint id, GLsizei len, const GLubyte *string);
1002 void extGlDeletePrograms(GLsizei n, const GLuint *programs); 1002 void extGlDeletePrograms(GLsizei n, const GLuint *programs);
1003 void extGlProgramLocalParameter4fv(GLenum, GLuint, const GLfloat *); 1003 void extGlProgramLocalParameter4fv(GLenum, GLuint, const GLfloat *);
1004 GLhandleARB extGlCreateShaderObject(GLenum shaderType); 1004 GLhandleARB extGlCreateShaderObject(GLenum shaderType);
1005 GLuint extGlCreateShader(GLenum shaderType); 1005 GLuint extGlCreateShader(GLenum shaderType);
1006 // note: Due to the type confusion between shader_objects and OpenGL 2.0 1006 // note: Due to the type confusion between shader_objects and OpenGL 2.0
1007 // we have to add the ARB extension for proper method definitions in case 1007 // we have to add the ARB extension for proper method definitions in case
1008 // that handleARB and uint are the same type 1008 // that handleARB and uint are the same type
1009 void extGlShaderSourceARB(GLhandleARB shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings); 1009 void extGlShaderSourceARB(GLhandleARB shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings);
1010 void extGlShaderSource(GLuint shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings); 1010 void extGlShaderSource(GLuint shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings);
1011 // note: Due to the type confusion between shader_objects and OpenGL 2.0 1011 // note: Due to the type confusion between shader_objects and OpenGL 2.0
1012 // we have to add the ARB extension for proper method definitions in case 1012 // we have to add the ARB extension for proper method definitions in case
1013 // that handleARB and uint are the same type 1013 // that handleARB and uint are the same type
1014 void extGlCompileShaderARB(GLhandleARB shader); 1014 void extGlCompileShaderARB(GLhandleARB shader);
1015 void extGlCompileShader(GLuint shader); 1015 void extGlCompileShader(GLuint shader);
1016 GLhandleARB extGlCreateProgramObject(void); 1016 GLhandleARB extGlCreateProgramObject(void);
1017 GLuint extGlCreateProgram(void); 1017 GLuint extGlCreateProgram(void);
1018 void extGlAttachObject(GLhandleARB program, GLhandleARB shader); 1018 void extGlAttachObject(GLhandleARB program, GLhandleARB shader);
1019 void extGlAttachShader(GLuint program, GLuint shader); 1019 void extGlAttachShader(GLuint program, GLuint shader);
1020 void extGlLinkProgramARB(GLhandleARB program); 1020 void extGlLinkProgramARB(GLhandleARB program);
1021 // note: Due to the type confusion between shader_objects and OpenGL 2.0 1021 // note: Due to the type confusion between shader_objects and OpenGL 2.0
1022 // we have to add the ARB extension for proper method definitions in case 1022 // we have to add the ARB extension for proper method definitions in case
1023 // that handleARB and uint are the same type 1023 // that handleARB and uint are the same type
1024 void extGlLinkProgram(GLuint program); 1024 void extGlLinkProgram(GLuint program);
1025 void extGlUseProgramObject(GLhandleARB prog); 1025 void extGlUseProgramObject(GLhandleARB prog);
1026 void extGlUseProgram(GLuint prog); 1026 void extGlUseProgram(GLuint prog);
1027 void extGlDeleteObject(GLhandleARB object); 1027 void extGlDeleteObject(GLhandleARB object);
1028 void extGlDeleteProgram(GLuint object); 1028 void extGlDeleteProgram(GLuint object);
1029 void extGlDeleteShader(GLuint shader); 1029 void extGlDeleteShader(GLuint shader);
1030 void extGlGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); 1030 void extGlGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
1031 void extGlGetAttachedObjects(GLhandleARB program, GLsizei maxcount, GLsizei* count, GLhandleARB* shaders); 1031 void extGlGetAttachedObjects(GLhandleARB program, GLsizei maxcount, GLsizei* count, GLhandleARB* shaders);
1032 void extGlGetInfoLog(GLhandleARB object, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); 1032 void extGlGetInfoLog(GLhandleARB object, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
1033 void extGlGetShaderInfoLog(GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog); 1033 void extGlGetShaderInfoLog(GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog);
1034 void extGlGetProgramInfoLog(GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog); 1034 void extGlGetProgramInfoLog(GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog);
1035 void extGlGetObjectParameteriv(GLhandleARB object, GLenum type, GLint *param); 1035 void extGlGetObjectParameteriv(GLhandleARB object, GLenum type, GLint *param);
1036 void extGlGetShaderiv(GLuint shader, GLenum type, GLint *param); 1036 void extGlGetShaderiv(GLuint shader, GLenum type, GLint *param);
1037 void extGlGetProgramiv(GLuint program, GLenum type, GLint *param); 1037 void extGlGetProgramiv(GLuint program, GLenum type, GLint *param);
1038 GLint extGlGetUniformLocationARB(GLhandleARB program, const char *name); 1038 GLint extGlGetUniformLocationARB(GLhandleARB program, const char *name);
1039 GLint extGlGetUniformLocation(GLuint program, const char *name); 1039 GLint extGlGetUniformLocation(GLuint program, const char *name);
1040 void extGlUniform1fv(GLint loc, GLsizei count, const GLfloat *v); 1040 void extGlUniform1fv(GLint loc, GLsizei count, const GLfloat *v);
1041 void extGlUniform2fv(GLint loc, GLsizei count, const GLfloat *v); 1041 void extGlUniform2fv(GLint loc, GLsizei count, const GLfloat *v);
1042 void extGlUniform3fv(GLint loc, GLsizei count, const GLfloat *v); 1042 void extGlUniform3fv(GLint loc, GLsizei count, const GLfloat *v);
1043 void extGlUniform4fv(GLint loc, GLsizei count, const GLfloat *v); 1043 void extGlUniform4fv(GLint loc, GLsizei count, const GLfloat *v);
1044 void extGlUniform1bv(GLint loc, GLsizei count, const bool *v); 1044 void extGlUniform1bv(GLint loc, GLsizei count, const bool *v);
1045 void extGlUniform2bv(GLint loc, GLsizei count, const bool *v); 1045 void extGlUniform2bv(GLint loc, GLsizei count, const bool *v);
1046 void extGlUniform3bv(GLint loc, GLsizei count, const bool *v); 1046 void extGlUniform3bv(GLint loc, GLsizei count, const bool *v);
1047 void extGlUniform4bv(GLint loc, GLsizei count, const bool *v); 1047 void extGlUniform4bv(GLint loc, GLsizei count, const bool *v);
1048 void extGlUniform1iv(GLint loc, GLsizei count, const GLint *v); 1048 void extGlUniform1iv(GLint loc, GLsizei count, const GLint *v);
1049 void extGlUniform2iv(GLint loc, GLsizei count, const GLint *v); 1049 void extGlUniform2iv(GLint loc, GLsizei count, const GLint *v);
1050 void extGlUniform3iv(GLint loc, GLsizei count, const GLint *v); 1050 void extGlUniform3iv(GLint loc, GLsizei count, const GLint *v);
1051 void extGlUniform4iv(GLint loc, GLsizei count, const GLint *v); 1051 void extGlUniform4iv(GLint loc, GLsizei count, const GLint *v);
1052 void extGlUniformMatrix2fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v); 1052 void extGlUniformMatrix2fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v);
1053 void extGlUniformMatrix3fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v); 1053 void extGlUniformMatrix3fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v);
1054 void extGlUniformMatrix4fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v); 1054 void extGlUniformMatrix4fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v);
1055 void extGlGetActiveUniformARB(GLhandleARB program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); 1055 void extGlGetActiveUniformARB(GLhandleARB program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
1056 void extGlGetActiveUniform(GLuint program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLchar *name); 1056 void extGlGetActiveUniform(GLuint program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
1057 1057
1058 // framebuffer objects 1058 // framebuffer objects
1059 void extGlBindFramebuffer(GLenum target, GLuint framebuffer); 1059 void extGlBindFramebuffer(GLenum target, GLuint framebuffer);
1060 void extGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); 1060 void extGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers);
1061 void extGlGenFramebuffers(GLsizei n, GLuint *framebuffers); 1061 void extGlGenFramebuffers(GLsizei n, GLuint *framebuffers);
1062 GLenum extGlCheckFramebufferStatus(GLenum target); 1062 GLenum extGlCheckFramebufferStatus(GLenum target);
1063 void extGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); 1063 void extGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
1064 void extGlBindRenderbuffer(GLenum target, GLuint renderbuffer); 1064 void extGlBindRenderbuffer(GLenum target, GLuint renderbuffer);
1065 void extGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); 1065 void extGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers);
1066 void extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers); 1066 void extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers);
1067 void extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); 1067 void extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
1068 void extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); 1068 void extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
1069 void extGlGenerateMipmap(GLenum target); 1069 void extGlGenerateMipmap(GLenum target);
1070 void extGlActiveStencilFace(GLenum face); 1070 void extGlActiveStencilFace(GLenum face);
1071 void extGlDrawBuffers(GLsizei n, const GLenum *bufs); 1071 void extGlDrawBuffers(GLsizei n, const GLenum *bufs);
1072 1072
1073 // vertex buffer object 1073 // vertex buffer object
1074 void extGlGenBuffers(GLsizei n, GLuint *buffers); 1074 void extGlGenBuffers(GLsizei n, GLuint *buffers);
1075 void extGlBindBuffer(GLenum target, GLuint buffer); 1075 void extGlBindBuffer(GLenum target, GLuint buffer);
1076 void extGlBufferData(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); 1076 void extGlBufferData(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
1077 void extGlDeleteBuffers(GLsizei n, const GLuint *buffers); 1077 void extGlDeleteBuffers(GLsizei n, const GLuint *buffers);
1078 void extGlBufferSubData (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); 1078 void extGlBufferSubData (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
1079 void extGlGetBufferSubData (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); 1079 void extGlGetBufferSubData (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
1080 void *extGlMapBuffer (GLenum target, GLenum access); 1080 void *extGlMapBuffer (GLenum target, GLenum access);
1081 GLboolean extGlUnmapBuffer (GLenum target); 1081 GLboolean extGlUnmapBuffer (GLenum target);
1082 GLboolean extGlIsBuffer (GLuint buffer); 1082 GLboolean extGlIsBuffer (GLuint buffer);
1083 void extGlGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); 1083 void extGlGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
1084 void extGlGetBufferPointerv (GLenum target, GLenum pname, GLvoid **params); 1084 void extGlGetBufferPointerv (GLenum target, GLenum pname, GLvoid **params);
1085 void extGlProvokingVertex(GLenum mode); 1085 void extGlProvokingVertex(GLenum mode);
1086 void extGlColorMaskIndexed(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); 1086 void extGlColorMaskIndexed(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
1087 void extGlEnableIndexed(GLenum target, GLuint index); 1087 void extGlEnableIndexed(GLenum target, GLuint index);
1088 void extGlDisableIndexed(GLenum target, GLuint index); 1088 void extGlDisableIndexed(GLenum target, GLuint index);
1089 void extGlBlendFuncIndexed(GLuint buf, GLenum src, GLenum dst); 1089 void extGlBlendFuncIndexed(GLuint buf, GLenum src, GLenum dst);
1090 void extGlBlendEquationIndexed(GLuint buf, GLenum mode); 1090 void extGlBlendEquationIndexed(GLuint buf, GLenum mode);
1091 void extGlProgramParameteri(GLhandleARB program, GLenum pname, GLint value); 1091 void extGlProgramParameteri(GLhandleARB program, GLenum pname, GLint value);
1092 1092
1093 // occlusion query 1093 // occlusion query
1094 void extGlGenQueries(GLsizei n, GLuint *ids); 1094 void extGlGenQueries(GLsizei n, GLuint *ids);
1095 void extGlDeleteQueries(GLsizei n, const GLuint *ids); 1095 void extGlDeleteQueries(GLsizei n, const GLuint *ids);
1096 GLboolean extGlIsQuery(GLuint id); 1096 GLboolean extGlIsQuery(GLuint id);
1097 void extGlBeginQuery(GLenum target, GLuint id); 1097 void extGlBeginQuery(GLenum target, GLuint id);
1098 void extGlEndQuery(GLenum target); 1098 void extGlEndQuery(GLenum target);
1099 void extGlGetQueryiv(GLenum target, GLenum pname, GLint *params); 1099 void extGlGetQueryiv(GLenum target, GLenum pname, GLint *params);
1100 void extGlGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); 1100 void extGlGetQueryObjectiv(GLuint id, GLenum pname, GLint *params);
1101 void extGlGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); 1101 void extGlGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params);
1102 1102
1103 // generic vsync setting method for several extensions 1103 // generic vsync setting method for several extensions
1104 void extGlSwapInterval(int interval); 1104 void extGlSwapInterval(int interval);
1105 1105
1106 // blend operations 1106 // blend operations
1107 void extGlBlendEquation(GLenum mode); 1107 void extGlBlendEquation(GLenum mode);
1108 1108
1109 // the global feature array 1109 // the global feature array
1110 bool FeatureAvailable[IRR_OpenGL_Feature_Count]; 1110 bool FeatureAvailable[IRR_OpenGL_Feature_Count];
1111 1111
1112 protected: 1112 protected:
1113 #if defined(_IRR_OPENGL_USE_EXTPOINTER_) 1113 #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
1114 PFNGLACTIVETEXTUREARBPROC pGlActiveTextureARB; 1114 PFNGLACTIVETEXTUREARBPROC pGlActiveTextureARB;
1115 PFNGLCLIENTACTIVETEXTUREARBPROC pGlClientActiveTextureARB; 1115 PFNGLCLIENTACTIVETEXTUREARBPROC pGlClientActiveTextureARB;
1116 PFNGLGENPROGRAMSARBPROC pGlGenProgramsARB; 1116 PFNGLGENPROGRAMSARBPROC pGlGenProgramsARB;
1117 PFNGLGENPROGRAMSNVPROC pGlGenProgramsNV; 1117 PFNGLGENPROGRAMSNVPROC pGlGenProgramsNV;
1118 PFNGLBINDPROGRAMARBPROC pGlBindProgramARB; 1118 PFNGLBINDPROGRAMARBPROC pGlBindProgramARB;
1119 PFNGLBINDPROGRAMNVPROC pGlBindProgramNV; 1119 PFNGLBINDPROGRAMNVPROC pGlBindProgramNV;
1120 PFNGLDELETEPROGRAMSARBPROC pGlDeleteProgramsARB; 1120 PFNGLDELETEPROGRAMSARBPROC pGlDeleteProgramsARB;
1121 PFNGLDELETEPROGRAMSNVPROC pGlDeleteProgramsNV; 1121 PFNGLDELETEPROGRAMSNVPROC pGlDeleteProgramsNV;
1122 PFNGLPROGRAMSTRINGARBPROC pGlProgramStringARB; 1122 PFNGLPROGRAMSTRINGARBPROC pGlProgramStringARB;
1123 PFNGLLOADPROGRAMNVPROC pGlLoadProgramNV; 1123 PFNGLLOADPROGRAMNVPROC pGlLoadProgramNV;
1124 PFNGLPROGRAMLOCALPARAMETER4FVARBPROC pGlProgramLocalParameter4fvARB; 1124 PFNGLPROGRAMLOCALPARAMETER4FVARBPROC pGlProgramLocalParameter4fvARB;
1125 PFNGLCREATESHADEROBJECTARBPROC pGlCreateShaderObjectARB; 1125 PFNGLCREATESHADEROBJECTARBPROC pGlCreateShaderObjectARB;
1126 PFNGLSHADERSOURCEARBPROC pGlShaderSourceARB; 1126 PFNGLSHADERSOURCEARBPROC pGlShaderSourceARB;
1127 PFNGLCOMPILESHADERARBPROC pGlCompileShaderARB; 1127 PFNGLCOMPILESHADERARBPROC pGlCompileShaderARB;
1128 PFNGLCREATEPROGRAMOBJECTARBPROC pGlCreateProgramObjectARB; 1128 PFNGLCREATEPROGRAMOBJECTARBPROC pGlCreateProgramObjectARB;
1129 PFNGLATTACHOBJECTARBPROC pGlAttachObjectARB; 1129 PFNGLATTACHOBJECTARBPROC pGlAttachObjectARB;
1130 PFNGLLINKPROGRAMARBPROC pGlLinkProgramARB; 1130 PFNGLLINKPROGRAMARBPROC pGlLinkProgramARB;
1131 PFNGLUSEPROGRAMOBJECTARBPROC pGlUseProgramObjectARB; 1131 PFNGLUSEPROGRAMOBJECTARBPROC pGlUseProgramObjectARB;
1132 PFNGLDELETEOBJECTARBPROC pGlDeleteObjectARB; 1132 PFNGLDELETEOBJECTARBPROC pGlDeleteObjectARB;
1133 PFNGLCREATEPROGRAMPROC pGlCreateProgram; 1133 PFNGLCREATEPROGRAMPROC pGlCreateProgram;
1134 PFNGLUSEPROGRAMPROC pGlUseProgram; 1134 PFNGLUSEPROGRAMPROC pGlUseProgram;
1135 PFNGLDELETEPROGRAMPROC pGlDeleteProgram; 1135 PFNGLDELETEPROGRAMPROC pGlDeleteProgram;
1136 PFNGLDELETESHADERPROC pGlDeleteShader; 1136 PFNGLDELETESHADERPROC pGlDeleteShader;
1137 PFNGLGETATTACHEDOBJECTSARBPROC pGlGetAttachedObjectsARB; 1137 PFNGLGETATTACHEDOBJECTSARBPROC pGlGetAttachedObjectsARB;
1138 PFNGLGETATTACHEDSHADERSPROC pGlGetAttachedShaders; 1138 PFNGLGETATTACHEDSHADERSPROC pGlGetAttachedShaders;
1139 PFNGLCREATESHADERPROC pGlCreateShader; 1139 PFNGLCREATESHADERPROC pGlCreateShader;
1140 PFNGLSHADERSOURCEPROC pGlShaderSource; 1140 PFNGLSHADERSOURCEPROC pGlShaderSource;
1141 PFNGLCOMPILESHADERPROC pGlCompileShader; 1141 PFNGLCOMPILESHADERPROC pGlCompileShader;
1142 PFNGLATTACHSHADERPROC pGlAttachShader; 1142 PFNGLATTACHSHADERPROC pGlAttachShader;
1143 PFNGLLINKPROGRAMPROC pGlLinkProgram; 1143 PFNGLLINKPROGRAMPROC pGlLinkProgram;
1144 PFNGLGETINFOLOGARBPROC pGlGetInfoLogARB; 1144 PFNGLGETINFOLOGARBPROC pGlGetInfoLogARB;
1145 PFNGLGETSHADERINFOLOGPROC pGlGetShaderInfoLog; 1145 PFNGLGETSHADERINFOLOGPROC pGlGetShaderInfoLog;
1146 PFNGLGETPROGRAMINFOLOGPROC pGlGetProgramInfoLog; 1146 PFNGLGETPROGRAMINFOLOGPROC pGlGetProgramInfoLog;
1147 PFNGLGETOBJECTPARAMETERIVARBPROC pGlGetObjectParameterivARB; 1147 PFNGLGETOBJECTPARAMETERIVARBPROC pGlGetObjectParameterivARB;
1148 PFNGLGETSHADERIVPROC pGlGetShaderiv; 1148 PFNGLGETSHADERIVPROC pGlGetShaderiv;
1149 PFNGLGETSHADERIVPROC pGlGetProgramiv; 1149 PFNGLGETSHADERIVPROC pGlGetProgramiv;
1150 PFNGLGETUNIFORMLOCATIONARBPROC pGlGetUniformLocationARB; 1150 PFNGLGETUNIFORMLOCATIONARBPROC pGlGetUniformLocationARB;
1151 PFNGLGETUNIFORMLOCATIONPROC pGlGetUniformLocation; 1151 PFNGLGETUNIFORMLOCATIONPROC pGlGetUniformLocation;
1152 PFNGLUNIFORM1FVARBPROC pGlUniform1fvARB; 1152 PFNGLUNIFORM1FVARBPROC pGlUniform1fvARB;
1153 PFNGLUNIFORM2FVARBPROC pGlUniform2fvARB; 1153 PFNGLUNIFORM2FVARBPROC pGlUniform2fvARB;
1154 PFNGLUNIFORM3FVARBPROC pGlUniform3fvARB; 1154 PFNGLUNIFORM3FVARBPROC pGlUniform3fvARB;
1155 PFNGLUNIFORM4FVARBPROC pGlUniform4fvARB; 1155 PFNGLUNIFORM4FVARBPROC pGlUniform4fvARB;
1156 PFNGLUNIFORM1IVARBPROC pGlUniform1ivARB; 1156 PFNGLUNIFORM1IVARBPROC pGlUniform1ivARB;
1157 PFNGLUNIFORM2IVARBPROC pGlUniform2ivARB; 1157 PFNGLUNIFORM2IVARBPROC pGlUniform2ivARB;
1158 PFNGLUNIFORM3IVARBPROC pGlUniform3ivARB; 1158 PFNGLUNIFORM3IVARBPROC pGlUniform3ivARB;
1159 PFNGLUNIFORM4IVARBPROC pGlUniform4ivARB; 1159 PFNGLUNIFORM4IVARBPROC pGlUniform4ivARB;
1160 PFNGLUNIFORMMATRIX2FVARBPROC pGlUniformMatrix2fvARB; 1160 PFNGLUNIFORMMATRIX2FVARBPROC pGlUniformMatrix2fvARB;
1161 PFNGLUNIFORMMATRIX3FVARBPROC pGlUniformMatrix3fvARB; 1161 PFNGLUNIFORMMATRIX3FVARBPROC pGlUniformMatrix3fvARB;
1162 PFNGLUNIFORMMATRIX4FVARBPROC pGlUniformMatrix4fvARB; 1162 PFNGLUNIFORMMATRIX4FVARBPROC pGlUniformMatrix4fvARB;
1163 PFNGLGETACTIVEUNIFORMARBPROC pGlGetActiveUniformARB; 1163 PFNGLGETACTIVEUNIFORMARBPROC pGlGetActiveUniformARB;
1164 PFNGLGETACTIVEUNIFORMPROC pGlGetActiveUniform; 1164 PFNGLGETACTIVEUNIFORMPROC pGlGetActiveUniform;
1165 PFNGLPOINTPARAMETERFARBPROC pGlPointParameterfARB; 1165 PFNGLPOINTPARAMETERFARBPROC pGlPointParameterfARB;
1166 PFNGLPOINTPARAMETERFVARBPROC pGlPointParameterfvARB; 1166 PFNGLPOINTPARAMETERFVARBPROC pGlPointParameterfvARB;
1167 PFNGLSTENCILFUNCSEPARATEPROC pGlStencilFuncSeparate; 1167 PFNGLSTENCILFUNCSEPARATEPROC pGlStencilFuncSeparate;
1168 PFNGLSTENCILOPSEPARATEPROC pGlStencilOpSeparate; 1168 PFNGLSTENCILOPSEPARATEPROC pGlStencilOpSeparate;
1169 PFNGLSTENCILFUNCSEPARATEATIPROC pGlStencilFuncSeparateATI; 1169 PFNGLSTENCILFUNCSEPARATEATIPROC pGlStencilFuncSeparateATI;
1170 PFNGLSTENCILOPSEPARATEATIPROC pGlStencilOpSeparateATI; 1170 PFNGLSTENCILOPSEPARATEATIPROC pGlStencilOpSeparateATI;
1171 PFNGLCOMPRESSEDTEXIMAGE2DPROC pGlCompressedTexImage2D; 1171 PFNGLCOMPRESSEDTEXIMAGE2DPROC pGlCompressedTexImage2D;
1172 // ARB framebuffer object 1172 // ARB framebuffer object
1173 PFNGLBINDFRAMEBUFFERPROC pGlBindFramebuffer; 1173 PFNGLBINDFRAMEBUFFERPROC pGlBindFramebuffer;
1174 PFNGLDELETEFRAMEBUFFERSPROC pGlDeleteFramebuffers; 1174 PFNGLDELETEFRAMEBUFFERSPROC pGlDeleteFramebuffers;
1175 PFNGLGENFRAMEBUFFERSPROC pGlGenFramebuffers; 1175 PFNGLGENFRAMEBUFFERSPROC pGlGenFramebuffers;
1176 PFNGLCHECKFRAMEBUFFERSTATUSPROC pGlCheckFramebufferStatus; 1176 PFNGLCHECKFRAMEBUFFERSTATUSPROC pGlCheckFramebufferStatus;
1177 PFNGLFRAMEBUFFERTEXTURE2DPROC pGlFramebufferTexture2D; 1177 PFNGLFRAMEBUFFERTEXTURE2DPROC pGlFramebufferTexture2D;
1178 PFNGLBINDRENDERBUFFERPROC pGlBindRenderbuffer; 1178 PFNGLBINDRENDERBUFFERPROC pGlBindRenderbuffer;
1179 PFNGLDELETERENDERBUFFERSPROC pGlDeleteRenderbuffers; 1179 PFNGLDELETERENDERBUFFERSPROC pGlDeleteRenderbuffers;
1180 PFNGLGENRENDERBUFFERSPROC pGlGenRenderbuffers; 1180 PFNGLGENRENDERBUFFERSPROC pGlGenRenderbuffers;
1181 PFNGLRENDERBUFFERSTORAGEPROC pGlRenderbufferStorage; 1181 PFNGLRENDERBUFFERSTORAGEPROC pGlRenderbufferStorage;
1182 PFNGLFRAMEBUFFERRENDERBUFFERPROC pGlFramebufferRenderbuffer; 1182 PFNGLFRAMEBUFFERRENDERBUFFERPROC pGlFramebufferRenderbuffer;
1183 PFNGLGENERATEMIPMAPPROC pGlGenerateMipmap; 1183 PFNGLGENERATEMIPMAPPROC pGlGenerateMipmap;
1184 // EXT framebuffer object 1184 // EXT framebuffer object
1185 PFNGLBINDFRAMEBUFFEREXTPROC pGlBindFramebufferEXT; 1185 PFNGLBINDFRAMEBUFFEREXTPROC pGlBindFramebufferEXT;
1186 PFNGLDELETEFRAMEBUFFERSEXTPROC pGlDeleteFramebuffersEXT; 1186 PFNGLDELETEFRAMEBUFFERSEXTPROC pGlDeleteFramebuffersEXT;
1187 PFNGLGENFRAMEBUFFERSEXTPROC pGlGenFramebuffersEXT; 1187 PFNGLGENFRAMEBUFFERSEXTPROC pGlGenFramebuffersEXT;
1188 PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC pGlCheckFramebufferStatusEXT; 1188 PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC pGlCheckFramebufferStatusEXT;
1189 PFNGLFRAMEBUFFERTEXTURE2DEXTPROC pGlFramebufferTexture2DEXT; 1189 PFNGLFRAMEBUFFERTEXTURE2DEXTPROC pGlFramebufferTexture2DEXT;
1190 PFNGLBINDRENDERBUFFEREXTPROC pGlBindRenderbufferEXT; 1190 PFNGLBINDRENDERBUFFEREXTPROC pGlBindRenderbufferEXT;
1191 PFNGLDELETERENDERBUFFERSEXTPROC pGlDeleteRenderbuffersEXT; 1191 PFNGLDELETERENDERBUFFERSEXTPROC pGlDeleteRenderbuffersEXT;
1192 PFNGLGENRENDERBUFFERSEXTPROC pGlGenRenderbuffersEXT; 1192 PFNGLGENRENDERBUFFERSEXTPROC pGlGenRenderbuffersEXT;
1193 PFNGLRENDERBUFFERSTORAGEEXTPROC pGlRenderbufferStorageEXT; 1193 PFNGLRENDERBUFFERSTORAGEEXTPROC pGlRenderbufferStorageEXT;
1194 PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC pGlFramebufferRenderbufferEXT; 1194 PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC pGlFramebufferRenderbufferEXT;
1195 PFNGLGENERATEMIPMAPEXTPROC pGlGenerateMipmapEXT; 1195 PFNGLGENERATEMIPMAPEXTPROC pGlGenerateMipmapEXT;
1196 PFNGLACTIVESTENCILFACEEXTPROC pGlActiveStencilFaceEXT; 1196 PFNGLACTIVESTENCILFACEEXTPROC pGlActiveStencilFaceEXT;
1197 PFNGLDRAWBUFFERSARBPROC pGlDrawBuffersARB; 1197 PFNGLDRAWBUFFERSARBPROC pGlDrawBuffersARB;
1198 PFNGLDRAWBUFFERSATIPROC pGlDrawBuffersATI; 1198 PFNGLDRAWBUFFERSATIPROC pGlDrawBuffersATI;
1199 PFNGLGENBUFFERSARBPROC pGlGenBuffersARB; 1199 PFNGLGENBUFFERSARBPROC pGlGenBuffersARB;
1200 PFNGLBINDBUFFERARBPROC pGlBindBufferARB; 1200 PFNGLBINDBUFFERARBPROC pGlBindBufferARB;
1201 PFNGLBUFFERDATAARBPROC pGlBufferDataARB; 1201 PFNGLBUFFERDATAARBPROC pGlBufferDataARB;
1202 PFNGLDELETEBUFFERSARBPROC pGlDeleteBuffersARB; 1202 PFNGLDELETEBUFFERSARBPROC pGlDeleteBuffersARB;
1203 PFNGLBUFFERSUBDATAARBPROC pGlBufferSubDataARB; 1203 PFNGLBUFFERSUBDATAARBPROC pGlBufferSubDataARB;
1204 PFNGLGETBUFFERSUBDATAARBPROC pGlGetBufferSubDataARB; 1204 PFNGLGETBUFFERSUBDATAARBPROC pGlGetBufferSubDataARB;
1205 PFNGLMAPBUFFERARBPROC pGlMapBufferARB; 1205 PFNGLMAPBUFFERARBPROC pGlMapBufferARB;
1206 PFNGLUNMAPBUFFERARBPROC pGlUnmapBufferARB; 1206 PFNGLUNMAPBUFFERARBPROC pGlUnmapBufferARB;
1207 PFNGLISBUFFERARBPROC pGlIsBufferARB; 1207 PFNGLISBUFFERARBPROC pGlIsBufferARB;
1208 PFNGLGETBUFFERPARAMETERIVARBPROC pGlGetBufferParameterivARB; 1208 PFNGLGETBUFFERPARAMETERIVARBPROC pGlGetBufferParameterivARB;
1209 PFNGLGETBUFFERPOINTERVARBPROC pGlGetBufferPointervARB; 1209 PFNGLGETBUFFERPOINTERVARBPROC pGlGetBufferPointervARB;
1210 PFNGLPROVOKINGVERTEXPROC pGlProvokingVertexARB; 1210 PFNGLPROVOKINGVERTEXPROC pGlProvokingVertexARB;
1211 PFNGLPROVOKINGVERTEXEXTPROC pGlProvokingVertexEXT; 1211 PFNGLPROVOKINGVERTEXEXTPROC pGlProvokingVertexEXT;
1212 PFNGLCOLORMASKINDEXEDEXTPROC pGlColorMaskIndexedEXT; 1212 PFNGLCOLORMASKINDEXEDEXTPROC pGlColorMaskIndexedEXT;
1213 PFNGLENABLEINDEXEDEXTPROC pGlEnableIndexedEXT; 1213 PFNGLENABLEINDEXEDEXTPROC pGlEnableIndexedEXT;
1214 PFNGLDISABLEINDEXEDEXTPROC pGlDisableIndexedEXT; 1214 PFNGLDISABLEINDEXEDEXTPROC pGlDisableIndexedEXT;
1215 PFNGLBLENDFUNCINDEXEDAMDPROC pGlBlendFuncIndexedAMD; 1215 PFNGLBLENDFUNCINDEXEDAMDPROC pGlBlendFuncIndexedAMD;
1216 PFNGLBLENDFUNCIPROC pGlBlendFunciARB; 1216 PFNGLBLENDFUNCIPROC pGlBlendFunciARB;
1217 PFNGLBLENDEQUATIONINDEXEDAMDPROC pGlBlendEquationIndexedAMD; 1217 PFNGLBLENDEQUATIONINDEXEDAMDPROC pGlBlendEquationIndexedAMD;
1218 PFNGLBLENDEQUATIONIPROC pGlBlendEquationiARB; 1218 PFNGLBLENDEQUATIONIPROC pGlBlendEquationiARB;
1219 PFNGLPROGRAMPARAMETERIARBPROC pGlProgramParameteriARB; 1219 PFNGLPROGRAMPARAMETERIARBPROC pGlProgramParameteriARB;
1220 PFNGLPROGRAMPARAMETERIEXTPROC pGlProgramParameteriEXT; 1220 PFNGLPROGRAMPARAMETERIEXTPROC pGlProgramParameteriEXT;
1221 PFNGLGENQUERIESARBPROC pGlGenQueriesARB; 1221 PFNGLGENQUERIESARBPROC pGlGenQueriesARB;
1222 PFNGLDELETEQUERIESARBPROC pGlDeleteQueriesARB; 1222 PFNGLDELETEQUERIESARBPROC pGlDeleteQueriesARB;
1223 PFNGLISQUERYARBPROC pGlIsQueryARB; 1223 PFNGLISQUERYARBPROC pGlIsQueryARB;
1224 PFNGLBEGINQUERYARBPROC pGlBeginQueryARB; 1224 PFNGLBEGINQUERYARBPROC pGlBeginQueryARB;
1225 PFNGLENDQUERYARBPROC pGlEndQueryARB; 1225 PFNGLENDQUERYARBPROC pGlEndQueryARB;
1226 PFNGLGETQUERYIVARBPROC pGlGetQueryivARB; 1226 PFNGLGETQUERYIVARBPROC pGlGetQueryivARB;
1227 PFNGLGETQUERYOBJECTIVARBPROC pGlGetQueryObjectivARB; 1227 PFNGLGETQUERYOBJECTIVARBPROC pGlGetQueryObjectivARB;
1228 PFNGLGETQUERYOBJECTUIVARBPROC pGlGetQueryObjectuivARB; 1228 PFNGLGETQUERYOBJECTUIVARBPROC pGlGetQueryObjectuivARB;
1229 PFNGLGENOCCLUSIONQUERIESNVPROC pGlGenOcclusionQueriesNV; 1229 PFNGLGENOCCLUSIONQUERIESNVPROC pGlGenOcclusionQueriesNV;
1230 PFNGLDELETEOCCLUSIONQUERIESNVPROC pGlDeleteOcclusionQueriesNV; 1230 PFNGLDELETEOCCLUSIONQUERIESNVPROC pGlDeleteOcclusionQueriesNV;
1231 PFNGLISOCCLUSIONQUERYNVPROC pGlIsOcclusionQueryNV; 1231 PFNGLISOCCLUSIONQUERYNVPROC pGlIsOcclusionQueryNV;
1232 PFNGLBEGINOCCLUSIONQUERYNVPROC pGlBeginOcclusionQueryNV; 1232 PFNGLBEGINOCCLUSIONQUERYNVPROC pGlBeginOcclusionQueryNV;
1233 PFNGLENDOCCLUSIONQUERYNVPROC pGlEndOcclusionQueryNV; 1233 PFNGLENDOCCLUSIONQUERYNVPROC pGlEndOcclusionQueryNV;
1234 PFNGLGETOCCLUSIONQUERYIVNVPROC pGlGetOcclusionQueryivNV; 1234 PFNGLGETOCCLUSIONQUERYIVNVPROC pGlGetOcclusionQueryivNV;
1235 PFNGLGETOCCLUSIONQUERYUIVNVPROC pGlGetOcclusionQueryuivNV; 1235 PFNGLGETOCCLUSIONQUERYUIVNVPROC pGlGetOcclusionQueryuivNV;
1236 PFNGLBLENDEQUATIONEXTPROC pGlBlendEquationEXT; 1236 PFNGLBLENDEQUATIONEXTPROC pGlBlendEquationEXT;
1237 PFNGLBLENDEQUATIONPROC pGlBlendEquation; 1237 PFNGLBLENDEQUATIONPROC pGlBlendEquation;
1238 #if defined(WGL_EXT_swap_control) 1238 #if defined(WGL_EXT_swap_control)
1239 PFNWGLSWAPINTERVALEXTPROC pWglSwapIntervalEXT; 1239 PFNWGLSWAPINTERVALEXTPROC pWglSwapIntervalEXT;
1240 #endif 1240 #endif
1241 #if defined(GLX_SGI_swap_control) 1241 #if defined(GLX_SGI_swap_control)
1242 PFNGLXSWAPINTERVALSGIPROC pGlxSwapIntervalSGI; 1242 PFNGLXSWAPINTERVALSGIPROC pGlxSwapIntervalSGI;
1243 #endif 1243 #endif
1244 #if defined(GLX_EXT_swap_control) 1244 #if defined(GLX_EXT_swap_control)
1245 PFNGLXSWAPINTERVALEXTPROC pGlxSwapIntervalEXT; 1245 PFNGLXSWAPINTERVALEXTPROC pGlxSwapIntervalEXT;
1246 #endif 1246 #endif
1247 #if defined(GLX_MESA_swap_control) 1247 #if defined(GLX_MESA_swap_control)
1248 PFNGLXSWAPINTERVALMESAPROC pGlxSwapIntervalMESA; 1248 PFNGLXSWAPINTERVALMESAPROC pGlxSwapIntervalMESA;
1249 #endif 1249 #endif
1250 #endif 1250 #endif
1251}; 1251};
1252 1252
1253inline void COpenGLExtensionHandler::extGlActiveTexture(GLenum texture) 1253inline void COpenGLExtensionHandler::extGlActiveTexture(GLenum texture)
1254{ 1254{
1255#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1255#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1256 if (MultiTextureExtension && pGlActiveTextureARB) 1256 if (MultiTextureExtension && pGlActiveTextureARB)
1257 pGlActiveTextureARB(texture); 1257 pGlActiveTextureARB(texture);
1258#else 1258#else
1259 if (MultiTextureExtension) 1259 if (MultiTextureExtension)
1260#ifdef GL_ARB_multitexture 1260#ifdef GL_ARB_multitexture
1261 glActiveTextureARB(texture); 1261 glActiveTextureARB(texture);
1262#else 1262#else
1263 glActiveTexture(texture); 1263 glActiveTexture(texture);
1264#endif 1264#endif
1265#endif 1265#endif
1266} 1266}
1267 1267
1268inline void COpenGLExtensionHandler::extGlClientActiveTexture(GLenum texture) 1268inline void COpenGLExtensionHandler::extGlClientActiveTexture(GLenum texture)
1269{ 1269{
1270#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1270#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1271 if (MultiTextureExtension && pGlClientActiveTextureARB) 1271 if (MultiTextureExtension && pGlClientActiveTextureARB)
1272 pGlClientActiveTextureARB(texture); 1272 pGlClientActiveTextureARB(texture);
1273#else 1273#else
1274 if (MultiTextureExtension) 1274 if (MultiTextureExtension)
1275 glClientActiveTextureARB(texture); 1275 glClientActiveTextureARB(texture);
1276#endif 1276#endif
1277} 1277}
1278 1278
1279inline void COpenGLExtensionHandler::extGlGenPrograms(GLsizei n, GLuint *programs) 1279inline void COpenGLExtensionHandler::extGlGenPrograms(GLsizei n, GLuint *programs)
1280{ 1280{
1281 if (programs) 1281 if (programs)
1282 memset(programs,0,n*sizeof(GLuint)); 1282 memset(programs,0,n*sizeof(GLuint));
1283#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1283#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1284 if (pGlGenProgramsARB) 1284 if (pGlGenProgramsARB)
1285 pGlGenProgramsARB(n, programs); 1285 pGlGenProgramsARB(n, programs);
1286 else if (pGlGenProgramsNV) 1286 else if (pGlGenProgramsNV)
1287 pGlGenProgramsNV(n, programs); 1287 pGlGenProgramsNV(n, programs);
1288#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) 1288#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program)
1289 glGenProgramsARB(n,programs); 1289 glGenProgramsARB(n,programs);
1290#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program) 1290#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program)
1291 glGenProgramsNV(n,programs); 1291 glGenProgramsNV(n,programs);
1292#else 1292#else
1293 os::Printer::log("glGenPrograms not supported", ELL_ERROR); 1293 os::Printer::log("glGenPrograms not supported", ELL_ERROR);
1294#endif 1294#endif
1295} 1295}
1296 1296
1297inline void COpenGLExtensionHandler::extGlBindProgram(GLenum target, GLuint program) 1297inline void COpenGLExtensionHandler::extGlBindProgram(GLenum target, GLuint program)
1298{ 1298{
1299#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1299#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1300 if (pGlBindProgramARB) 1300 if (pGlBindProgramARB)
1301 pGlBindProgramARB(target, program); 1301 pGlBindProgramARB(target, program);
1302 else if (pGlBindProgramNV) 1302 else if (pGlBindProgramNV)
1303 pGlBindProgramNV(target, program); 1303 pGlBindProgramNV(target, program);
1304#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) 1304#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program)
1305 glBindProgramARB(target, program); 1305 glBindProgramARB(target, program);
1306#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program) 1306#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program)
1307 glBindProgramNV(target, program); 1307 glBindProgramNV(target, program);
1308#else 1308#else
1309 os::Printer::log("glBindProgram not supported", ELL_ERROR); 1309 os::Printer::log("glBindProgram not supported", ELL_ERROR);
1310#endif 1310#endif
1311} 1311}
1312 1312
1313inline void COpenGLExtensionHandler::extGlProgramString(GLenum target, GLenum format, GLsizei len, const GLvoid *string) 1313inline void COpenGLExtensionHandler::extGlProgramString(GLenum target, GLenum format, GLsizei len, const GLvoid *string)
1314{ 1314{
1315#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1315#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1316 if (pGlProgramStringARB) 1316 if (pGlProgramStringARB)
1317 pGlProgramStringARB(target, format, len, string); 1317 pGlProgramStringARB(target, format, len, string);
1318#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) 1318#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program)
1319 glProgramStringARB(target,format,len,string); 1319 glProgramStringARB(target,format,len,string);
1320#else 1320#else
1321 os::Printer::log("glProgramString not supported", ELL_ERROR); 1321 os::Printer::log("glProgramString not supported", ELL_ERROR);
1322#endif 1322#endif
1323} 1323}
1324 1324
1325inline void COpenGLExtensionHandler::extGlLoadProgram(GLenum target, GLuint id, GLsizei len, const GLubyte *string) 1325inline void COpenGLExtensionHandler::extGlLoadProgram(GLenum target, GLuint id, GLsizei len, const GLubyte *string)
1326{ 1326{
1327#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1327#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1328 if (pGlLoadProgramNV) 1328 if (pGlLoadProgramNV)
1329 pGlLoadProgramNV(target, id, len, string); 1329 pGlLoadProgramNV(target, id, len, string);
1330#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program) 1330#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program)
1331 glLoadProgramNV(target,id,len,string); 1331 glLoadProgramNV(target,id,len,string);
1332#else 1332#else
1333 os::Printer::log("glLoadProgram not supported", ELL_ERROR); 1333 os::Printer::log("glLoadProgram not supported", ELL_ERROR);
1334#endif 1334#endif
1335} 1335}
1336 1336
1337inline void COpenGLExtensionHandler::extGlDeletePrograms(GLsizei n, const GLuint *programs) 1337inline void COpenGLExtensionHandler::extGlDeletePrograms(GLsizei n, const GLuint *programs)
1338{ 1338{
1339#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1339#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1340 if (pGlDeleteProgramsARB) 1340 if (pGlDeleteProgramsARB)
1341 pGlDeleteProgramsARB(n, programs); 1341 pGlDeleteProgramsARB(n, programs);
1342 else if (pGlDeleteProgramsNV) 1342 else if (pGlDeleteProgramsNV)
1343 pGlDeleteProgramsNV(n, programs); 1343 pGlDeleteProgramsNV(n, programs);
1344#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) 1344#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program)
1345 glDeleteProgramsARB(n,programs); 1345 glDeleteProgramsARB(n,programs);
1346#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program) 1346#elif defined(GL_NV_vertex_program) || defined(GL_NV_fragment_program)
1347 glDeleteProgramsNV(n,programs); 1347 glDeleteProgramsNV(n,programs);
1348#else 1348#else
1349 os::Printer::log("glDeletePrograms not supported", ELL_ERROR); 1349 os::Printer::log("glDeletePrograms not supported", ELL_ERROR);
1350#endif 1350#endif
1351} 1351}
1352 1352
1353inline void COpenGLExtensionHandler::extGlProgramLocalParameter4fv(GLenum n, GLuint i, const GLfloat *f) 1353inline void COpenGLExtensionHandler::extGlProgramLocalParameter4fv(GLenum n, GLuint i, const GLfloat *f)
1354{ 1354{
1355#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1355#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1356 if (pGlProgramLocalParameter4fvARB) 1356 if (pGlProgramLocalParameter4fvARB)
1357 pGlProgramLocalParameter4fvARB(n,i,f); 1357 pGlProgramLocalParameter4fvARB(n,i,f);
1358#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) 1358#elif defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program)
1359 glProgramLocalParameter4fvARB(n,i,f); 1359 glProgramLocalParameter4fvARB(n,i,f);
1360#else 1360#else
1361 os::Printer::log("glProgramLocalParameter4fv not supported", ELL_ERROR); 1361 os::Printer::log("glProgramLocalParameter4fv not supported", ELL_ERROR);
1362#endif 1362#endif
1363} 1363}
1364 1364
1365inline GLhandleARB COpenGLExtensionHandler::extGlCreateShaderObject(GLenum shaderType) 1365inline GLhandleARB COpenGLExtensionHandler::extGlCreateShaderObject(GLenum shaderType)
1366{ 1366{
1367#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1367#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1368 if (pGlCreateShaderObjectARB) 1368 if (pGlCreateShaderObjectARB)
1369 return pGlCreateShaderObjectARB(shaderType); 1369 return pGlCreateShaderObjectARB(shaderType);
1370#elif defined(GL_ARB_shader_objects) 1370#elif defined(GL_ARB_shader_objects)
1371 return glCreateShaderObjectARB(shaderType); 1371 return glCreateShaderObjectARB(shaderType);
1372#else 1372#else
1373 os::Printer::log("glCreateShaderObject not supported", ELL_ERROR); 1373 os::Printer::log("glCreateShaderObject not supported", ELL_ERROR);
1374#endif 1374#endif
1375 return 0; 1375 return 0;
1376} 1376}
1377 1377
1378inline GLuint COpenGLExtensionHandler::extGlCreateShader(GLenum shaderType) 1378inline GLuint COpenGLExtensionHandler::extGlCreateShader(GLenum shaderType)
1379{ 1379{
1380#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1380#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1381 if (pGlCreateShader) 1381 if (pGlCreateShader)
1382 return pGlCreateShader(shaderType); 1382 return pGlCreateShader(shaderType);
1383#elif defined(GL_VERSION_2_0) 1383#elif defined(GL_VERSION_2_0)
1384 return glCreateShader(shaderType); 1384 return glCreateShader(shaderType);
1385#else 1385#else
1386 os::Printer::log("glCreateShader not supported", ELL_ERROR); 1386 os::Printer::log("glCreateShader not supported", ELL_ERROR);
1387#endif 1387#endif
1388 return 0; 1388 return 0;
1389} 1389}
1390 1390
1391inline void COpenGLExtensionHandler::extGlShaderSourceARB(GLhandleARB shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings) 1391inline void COpenGLExtensionHandler::extGlShaderSourceARB(GLhandleARB shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings)
1392{ 1392{
1393#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1393#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1394 if (pGlShaderSourceARB) 1394 if (pGlShaderSourceARB)
1395 pGlShaderSourceARB(shader, numOfStrings, strings, lenOfStrings); 1395 pGlShaderSourceARB(shader, numOfStrings, strings, lenOfStrings);
1396#elif defined(GL_ARB_shader_objects) 1396#elif defined(GL_ARB_shader_objects)
1397 glShaderSourceARB(shader, numOfStrings, strings, (GLint *)lenOfStrings); 1397 glShaderSourceARB(shader, numOfStrings, strings, (GLint *)lenOfStrings);
1398#else 1398#else
1399 os::Printer::log("glShaderSource not supported", ELL_ERROR); 1399 os::Printer::log("glShaderSource not supported", ELL_ERROR);
1400#endif 1400#endif
1401} 1401}
1402 1402
1403inline void COpenGLExtensionHandler::extGlShaderSource(GLuint shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings) 1403inline void COpenGLExtensionHandler::extGlShaderSource(GLuint shader, GLsizei numOfStrings, const char **strings, const GLint *lenOfStrings)
1404{ 1404{
1405#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1405#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1406 if (pGlShaderSource) 1406 if (pGlShaderSource)
1407 pGlShaderSource(shader, numOfStrings, strings, lenOfStrings); 1407 pGlShaderSource(shader, numOfStrings, strings, lenOfStrings);
1408#elif defined(GL_VERSION_2_0) 1408#elif defined(GL_VERSION_2_0)
1409 glShaderSource(shader, numOfStrings, strings, (GLint *)lenOfStrings); 1409 glShaderSource(shader, numOfStrings, strings, (GLint *)lenOfStrings);
1410#else 1410#else
1411 os::Printer::log("glShaderSource not supported", ELL_ERROR); 1411 os::Printer::log("glShaderSource not supported", ELL_ERROR);
1412#endif 1412#endif
1413} 1413}
1414 1414
1415inline void COpenGLExtensionHandler::extGlCompileShaderARB(GLhandleARB shader) 1415inline void COpenGLExtensionHandler::extGlCompileShaderARB(GLhandleARB shader)
1416{ 1416{
1417#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1417#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1418 if (pGlCompileShaderARB) 1418 if (pGlCompileShaderARB)
1419 pGlCompileShaderARB(shader); 1419 pGlCompileShaderARB(shader);
1420#elif defined(GL_ARB_shader_objects) 1420#elif defined(GL_ARB_shader_objects)
1421 glCompileShaderARB(shader); 1421 glCompileShaderARB(shader);
1422#else 1422#else
1423 os::Printer::log("glCompileShader not supported", ELL_ERROR); 1423 os::Printer::log("glCompileShader not supported", ELL_ERROR);
1424#endif 1424#endif
1425} 1425}
1426 1426
1427inline void COpenGLExtensionHandler::extGlCompileShader(GLuint shader) 1427inline void COpenGLExtensionHandler::extGlCompileShader(GLuint shader)
1428{ 1428{
1429#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1429#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1430 if (pGlCompileShader) 1430 if (pGlCompileShader)
1431 pGlCompileShader(shader); 1431 pGlCompileShader(shader);
1432#elif defined(GL_VERSION_2_0) 1432#elif defined(GL_VERSION_2_0)
1433 glCompileShader(shader); 1433 glCompileShader(shader);
1434#else 1434#else
1435 os::Printer::log("glCompileShader not supported", ELL_ERROR); 1435 os::Printer::log("glCompileShader not supported", ELL_ERROR);
1436#endif 1436#endif
1437} 1437}
1438 1438
1439inline GLhandleARB COpenGLExtensionHandler::extGlCreateProgramObject(void) 1439inline GLhandleARB COpenGLExtensionHandler::extGlCreateProgramObject(void)
1440{ 1440{
1441#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1441#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1442 if (pGlCreateProgramObjectARB) 1442 if (pGlCreateProgramObjectARB)
1443 return pGlCreateProgramObjectARB(); 1443 return pGlCreateProgramObjectARB();
1444#elif defined(GL_ARB_shader_objects) 1444#elif defined(GL_ARB_shader_objects)
1445 return glCreateProgramObjectARB(); 1445 return glCreateProgramObjectARB();
1446#else 1446#else
1447 os::Printer::log("glCreateProgramObject not supported", ELL_ERROR); 1447 os::Printer::log("glCreateProgramObject not supported", ELL_ERROR);
1448#endif 1448#endif
1449 return 0; 1449 return 0;
1450} 1450}
1451 1451
1452inline GLuint COpenGLExtensionHandler::extGlCreateProgram(void) 1452inline GLuint COpenGLExtensionHandler::extGlCreateProgram(void)
1453{ 1453{
1454#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1454#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1455 if (pGlCreateProgram) 1455 if (pGlCreateProgram)
1456 return pGlCreateProgram(); 1456 return pGlCreateProgram();
1457#elif defined(GL_VERSION_2_0) 1457#elif defined(GL_VERSION_2_0)
1458 return glCreateProgram(); 1458 return glCreateProgram();
1459#else 1459#else
1460 os::Printer::log("glCreateProgram not supported", ELL_ERROR); 1460 os::Printer::log("glCreateProgram not supported", ELL_ERROR);
1461#endif 1461#endif
1462 return 0; 1462 return 0;
1463} 1463}
1464 1464
1465inline void COpenGLExtensionHandler::extGlAttachObject(GLhandleARB program, GLhandleARB shader) 1465inline void COpenGLExtensionHandler::extGlAttachObject(GLhandleARB program, GLhandleARB shader)
1466{ 1466{
1467#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1467#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1468 if (pGlAttachObjectARB) 1468 if (pGlAttachObjectARB)
1469 pGlAttachObjectARB(program, shader); 1469 pGlAttachObjectARB(program, shader);
1470#elif defined(GL_ARB_shader_objects) 1470#elif defined(GL_ARB_shader_objects)
1471 glAttachObjectARB(program, shader); 1471 glAttachObjectARB(program, shader);
1472#else 1472#else
1473 os::Printer::log("glAttachObject not supported", ELL_ERROR); 1473 os::Printer::log("glAttachObject not supported", ELL_ERROR);
1474#endif 1474#endif
1475} 1475}
1476 1476
1477inline void COpenGLExtensionHandler::extGlAttachShader(GLuint program, GLuint shader) 1477inline void COpenGLExtensionHandler::extGlAttachShader(GLuint program, GLuint shader)
1478{ 1478{
1479#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1479#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1480 if (pGlAttachShader) 1480 if (pGlAttachShader)
1481 pGlAttachShader(program, shader); 1481 pGlAttachShader(program, shader);
1482#elif defined(GL_VERSION_2_0) 1482#elif defined(GL_VERSION_2_0)
1483 glAttachShader(program, shader); 1483 glAttachShader(program, shader);
1484#else 1484#else
1485 os::Printer::log("glAttachShader not supported", ELL_ERROR); 1485 os::Printer::log("glAttachShader not supported", ELL_ERROR);
1486#endif 1486#endif
1487} 1487}
1488 1488
1489inline void COpenGLExtensionHandler::extGlLinkProgramARB(GLhandleARB program) 1489inline void COpenGLExtensionHandler::extGlLinkProgramARB(GLhandleARB program)
1490{ 1490{
1491#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1491#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1492 if (pGlLinkProgramARB) 1492 if (pGlLinkProgramARB)
1493 pGlLinkProgramARB(program); 1493 pGlLinkProgramARB(program);
1494#elif defined(GL_ARB_shader_objects) 1494#elif defined(GL_ARB_shader_objects)
1495 glLinkProgramARB(program); 1495 glLinkProgramARB(program);
1496#else 1496#else
1497 os::Printer::log("glLinkProgram not supported", ELL_ERROR); 1497 os::Printer::log("glLinkProgram not supported", ELL_ERROR);
1498#endif 1498#endif
1499} 1499}
1500 1500
1501inline void COpenGLExtensionHandler::extGlLinkProgram(GLuint program) 1501inline void COpenGLExtensionHandler::extGlLinkProgram(GLuint program)
1502{ 1502{
1503#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1503#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1504 if (pGlLinkProgram) 1504 if (pGlLinkProgram)
1505 pGlLinkProgram(program); 1505 pGlLinkProgram(program);
1506#elif defined(GL_VERSION_2_0) 1506#elif defined(GL_VERSION_2_0)
1507 glLinkProgram(program); 1507 glLinkProgram(program);
1508#else 1508#else
1509 os::Printer::log("glLinkProgram not supported", ELL_ERROR); 1509 os::Printer::log("glLinkProgram not supported", ELL_ERROR);
1510#endif 1510#endif
1511} 1511}
1512 1512
1513inline void COpenGLExtensionHandler::extGlUseProgramObject(GLhandleARB prog) 1513inline void COpenGLExtensionHandler::extGlUseProgramObject(GLhandleARB prog)
1514{ 1514{
1515#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1515#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1516 if (pGlUseProgramObjectARB) 1516 if (pGlUseProgramObjectARB)
1517 pGlUseProgramObjectARB(prog); 1517 pGlUseProgramObjectARB(prog);
1518#elif defined(GL_ARB_shader_objects) 1518#elif defined(GL_ARB_shader_objects)
1519 glUseProgramObjectARB(prog); 1519 glUseProgramObjectARB(prog);
1520#else 1520#else
1521 os::Printer::log("glUseProgramObject not supported", ELL_ERROR); 1521 os::Printer::log("glUseProgramObject not supported", ELL_ERROR);
1522#endif 1522#endif
1523} 1523}
1524 1524
1525inline void COpenGLExtensionHandler::extGlUseProgram(GLuint prog) 1525inline void COpenGLExtensionHandler::extGlUseProgram(GLuint prog)
1526{ 1526{
1527#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1527#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1528 if (pGlUseProgram) 1528 if (pGlUseProgram)
1529 pGlUseProgram(prog); 1529 pGlUseProgram(prog);
1530#elif defined(GL_VERSION_2_0) 1530#elif defined(GL_VERSION_2_0)
1531 glUseProgram(prog); 1531 glUseProgram(prog);
1532#else 1532#else
1533 os::Printer::log("glUseProgram not supported", ELL_ERROR); 1533 os::Printer::log("glUseProgram not supported", ELL_ERROR);
1534#endif 1534#endif
1535} 1535}
1536 1536
1537inline void COpenGLExtensionHandler::extGlDeleteObject(GLhandleARB object) 1537inline void COpenGLExtensionHandler::extGlDeleteObject(GLhandleARB object)
1538{ 1538{
1539#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1539#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1540 if (pGlDeleteObjectARB) 1540 if (pGlDeleteObjectARB)
1541 pGlDeleteObjectARB(object); 1541 pGlDeleteObjectARB(object);
1542#elif defined(GL_ARB_shader_objects) 1542#elif defined(GL_ARB_shader_objects)
1543 glDeleteObjectARB(object); 1543 glDeleteObjectARB(object);
1544#else 1544#else
1545 os::Printer::log("glDeleteObject not supported", ELL_ERROR); 1545 os::Printer::log("glDeleteObject not supported", ELL_ERROR);
1546#endif 1546#endif
1547} 1547}
1548 1548
1549inline void COpenGLExtensionHandler::extGlDeleteProgram(GLuint object) 1549inline void COpenGLExtensionHandler::extGlDeleteProgram(GLuint object)
1550{ 1550{
1551#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1551#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1552 if (pGlDeleteProgram) 1552 if (pGlDeleteProgram)
1553 pGlDeleteProgram(object); 1553 pGlDeleteProgram(object);
1554#elif defined(GL_VERSION_2_0) 1554#elif defined(GL_VERSION_2_0)
1555 glDeleteProgram(object); 1555 glDeleteProgram(object);
1556#else 1556#else
1557 os::Printer::log("glDeleteProgram not supported", ELL_ERROR); 1557 os::Printer::log("glDeleteProgram not supported", ELL_ERROR);
1558#endif 1558#endif
1559} 1559}
1560 1560
1561inline void COpenGLExtensionHandler::extGlDeleteShader(GLuint shader) 1561inline void COpenGLExtensionHandler::extGlDeleteShader(GLuint shader)
1562{ 1562{
1563#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1563#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1564 if (pGlDeleteShader) 1564 if (pGlDeleteShader)
1565 pGlDeleteShader(shader); 1565 pGlDeleteShader(shader);
1566#elif defined(GL_VERSION_2_0) 1566#elif defined(GL_VERSION_2_0)
1567 glDeleteShader(shader); 1567 glDeleteShader(shader);
1568#else 1568#else
1569 os::Printer::log("glDeleteShader not supported", ELL_ERROR); 1569 os::Printer::log("glDeleteShader not supported", ELL_ERROR);
1570#endif 1570#endif
1571} 1571}
1572 1572
1573inline void COpenGLExtensionHandler::extGlGetAttachedObjects(GLhandleARB program, GLsizei maxcount, GLsizei* count, GLhandleARB* shaders) 1573inline void COpenGLExtensionHandler::extGlGetAttachedObjects(GLhandleARB program, GLsizei maxcount, GLsizei* count, GLhandleARB* shaders)
1574{ 1574{
1575 if (count) 1575 if (count)
1576 *count=0; 1576 *count=0;
1577#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1577#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1578 if (pGlGetAttachedObjectsARB) 1578 if (pGlGetAttachedObjectsARB)
1579 pGlGetAttachedObjectsARB(program, maxcount, count, shaders); 1579 pGlGetAttachedObjectsARB(program, maxcount, count, shaders);
1580#elif defined(GL_ARB_shader_objects) 1580#elif defined(GL_ARB_shader_objects)
1581 glGetAttachedObjectsARB(program, maxcount, count, shaders); 1581 glGetAttachedObjectsARB(program, maxcount, count, shaders);
1582#else 1582#else
1583 os::Printer::log("glGetAttachedObjects not supported", ELL_ERROR); 1583 os::Printer::log("glGetAttachedObjects not supported", ELL_ERROR);
1584#endif 1584#endif
1585} 1585}
1586 1586
1587inline void COpenGLExtensionHandler::extGlGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) 1587inline void COpenGLExtensionHandler::extGlGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
1588{ 1588{
1589 if (count) 1589 if (count)
1590 *count=0; 1590 *count=0;
1591#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1591#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1592 if (pGlGetAttachedShaders) 1592 if (pGlGetAttachedShaders)
1593 pGlGetAttachedShaders(program, maxcount, count, shaders); 1593 pGlGetAttachedShaders(program, maxcount, count, shaders);
1594#elif defined(GL_VERSION_2_0) 1594#elif defined(GL_VERSION_2_0)
1595 glGetAttachedShaders(program, maxcount, count, shaders); 1595 glGetAttachedShaders(program, maxcount, count, shaders);
1596#else 1596#else
1597 os::Printer::log("glGetAttachedShaders not supported", ELL_ERROR); 1597 os::Printer::log("glGetAttachedShaders not supported", ELL_ERROR);
1598#endif 1598#endif
1599} 1599}
1600 1600
1601inline void COpenGLExtensionHandler::extGlGetInfoLog(GLhandleARB object, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog) 1601inline void COpenGLExtensionHandler::extGlGetInfoLog(GLhandleARB object, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog)
1602{ 1602{
1603 if (length) 1603 if (length)
1604 *length=0; 1604 *length=0;
1605#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1605#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1606 if (pGlGetInfoLogARB) 1606 if (pGlGetInfoLogARB)
1607 pGlGetInfoLogARB(object, maxLength, length, infoLog); 1607 pGlGetInfoLogARB(object, maxLength, length, infoLog);
1608#elif defined(GL_ARB_shader_objects) 1608#elif defined(GL_ARB_shader_objects)
1609 glGetInfoLogARB(object, maxLength, length, infoLog); 1609 glGetInfoLogARB(object, maxLength, length, infoLog);
1610#else 1610#else
1611 os::Printer::log("glGetInfoLog not supported", ELL_ERROR); 1611 os::Printer::log("glGetInfoLog not supported", ELL_ERROR);
1612#endif 1612#endif
1613} 1613}
1614 1614
1615inline void COpenGLExtensionHandler::extGlGetShaderInfoLog(GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog) 1615inline void COpenGLExtensionHandler::extGlGetShaderInfoLog(GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog)
1616{ 1616{
1617 if (length) 1617 if (length)
1618 *length=0; 1618 *length=0;
1619#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1619#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1620 if (pGlGetShaderInfoLog) 1620 if (pGlGetShaderInfoLog)
1621 pGlGetShaderInfoLog(shader, maxLength, length, infoLog); 1621 pGlGetShaderInfoLog(shader, maxLength, length, infoLog);
1622#elif defined(GL_VERSION_2_0) 1622#elif defined(GL_VERSION_2_0)
1623 glGetShaderInfoLog(shader, maxLength, length, infoLog); 1623 glGetShaderInfoLog(shader, maxLength, length, infoLog);
1624#else 1624#else
1625 os::Printer::log("glGetShaderInfoLog not supported", ELL_ERROR); 1625 os::Printer::log("glGetShaderInfoLog not supported", ELL_ERROR);
1626#endif 1626#endif
1627} 1627}
1628 1628
1629inline void COpenGLExtensionHandler::extGlGetProgramInfoLog(GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog) 1629inline void COpenGLExtensionHandler::extGlGetProgramInfoLog(GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog)
1630{ 1630{
1631 if (length) 1631 if (length)
1632 *length=0; 1632 *length=0;
1633#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1633#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1634 if (pGlGetProgramInfoLog) 1634 if (pGlGetProgramInfoLog)
1635 pGlGetProgramInfoLog(program, maxLength, length, infoLog); 1635 pGlGetProgramInfoLog(program, maxLength, length, infoLog);
1636#elif defined(GL_VERSION_2_0) 1636#elif defined(GL_VERSION_2_0)
1637 glGetProgramInfoLog(program, maxLength, length, infoLog); 1637 glGetProgramInfoLog(program, maxLength, length, infoLog);
1638#else 1638#else
1639 os::Printer::log("glGetProgramInfoLog not supported", ELL_ERROR); 1639 os::Printer::log("glGetProgramInfoLog not supported", ELL_ERROR);
1640#endif 1640#endif
1641} 1641}
1642 1642
1643inline void COpenGLExtensionHandler::extGlGetObjectParameteriv(GLhandleARB object, GLenum type, GLint *param) 1643inline void COpenGLExtensionHandler::extGlGetObjectParameteriv(GLhandleARB object, GLenum type, GLint *param)
1644{ 1644{
1645#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1645#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1646 if (pGlGetObjectParameterivARB) 1646 if (pGlGetObjectParameterivARB)
1647 pGlGetObjectParameterivARB(object, type, param); 1647 pGlGetObjectParameterivARB(object, type, param);
1648#elif defined(GL_ARB_shader_objects) 1648#elif defined(GL_ARB_shader_objects)
1649 glGetObjectParameterivARB(object, type, param); 1649 glGetObjectParameterivARB(object, type, param);
1650#else 1650#else
1651 os::Printer::log("glGetObjectParameteriv not supported", ELL_ERROR); 1651 os::Printer::log("glGetObjectParameteriv not supported", ELL_ERROR);
1652#endif 1652#endif
1653} 1653}
1654 1654
1655inline void COpenGLExtensionHandler::extGlGetShaderiv(GLuint shader, GLenum type, GLint *param) 1655inline void COpenGLExtensionHandler::extGlGetShaderiv(GLuint shader, GLenum type, GLint *param)
1656{ 1656{
1657#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1657#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1658 if (pGlGetShaderiv) 1658 if (pGlGetShaderiv)
1659 pGlGetShaderiv(shader, type, param); 1659 pGlGetShaderiv(shader, type, param);
1660#elif defined(GL_VERSION_2_0) 1660#elif defined(GL_VERSION_2_0)
1661 glGetShaderiv(shader, type, param); 1661 glGetShaderiv(shader, type, param);
1662#else 1662#else
1663 os::Printer::log("glGetShaderiv not supported", ELL_ERROR); 1663 os::Printer::log("glGetShaderiv not supported", ELL_ERROR);
1664#endif 1664#endif
1665} 1665}
1666 1666
1667inline void COpenGLExtensionHandler::extGlGetProgramiv(GLuint program, GLenum type, GLint *param) 1667inline void COpenGLExtensionHandler::extGlGetProgramiv(GLuint program, GLenum type, GLint *param)
1668{ 1668{
1669#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1669#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1670 if (pGlGetProgramiv) 1670 if (pGlGetProgramiv)
1671 pGlGetProgramiv(program, type, param); 1671 pGlGetProgramiv(program, type, param);
1672#elif defined(GL_VERSION_2_0) 1672#elif defined(GL_VERSION_2_0)
1673 glGetProgramiv(program, type, param); 1673 glGetProgramiv(program, type, param);
1674#else 1674#else
1675 os::Printer::log("glGetProgramiv not supported", ELL_ERROR); 1675 os::Printer::log("glGetProgramiv not supported", ELL_ERROR);
1676#endif 1676#endif
1677} 1677}
1678 1678
1679inline GLint COpenGLExtensionHandler::extGlGetUniformLocationARB(GLhandleARB program, const char *name) 1679inline GLint COpenGLExtensionHandler::extGlGetUniformLocationARB(GLhandleARB program, const char *name)
1680{ 1680{
1681#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1681#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1682 if (pGlGetUniformLocationARB) 1682 if (pGlGetUniformLocationARB)
1683 return pGlGetUniformLocationARB(program, name); 1683 return pGlGetUniformLocationARB(program, name);
1684#elif defined(GL_ARB_shader_objects) 1684#elif defined(GL_ARB_shader_objects)
1685 return glGetUniformLocationARB(program, name); 1685 return glGetUniformLocationARB(program, name);
1686#else 1686#else
1687 os::Printer::log("glGetUniformLocation not supported", ELL_ERROR); 1687 os::Printer::log("glGetUniformLocation not supported", ELL_ERROR);
1688#endif 1688#endif
1689 return 0; 1689 return 0;
1690} 1690}
1691 1691
1692inline GLint COpenGLExtensionHandler::extGlGetUniformLocation(GLuint program, const char *name) 1692inline GLint COpenGLExtensionHandler::extGlGetUniformLocation(GLuint program, const char *name)
1693{ 1693{
1694#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1694#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1695 if (pGlGetUniformLocation) 1695 if (pGlGetUniformLocation)
1696 return pGlGetUniformLocation(program, name); 1696 return pGlGetUniformLocation(program, name);
1697#elif defined(GL_VERSION_2_0) 1697#elif defined(GL_VERSION_2_0)
1698 return glGetUniformLocation(program, name); 1698 return glGetUniformLocation(program, name);
1699#else 1699#else
1700 os::Printer::log("glGetUniformLocation not supported", ELL_ERROR); 1700 os::Printer::log("glGetUniformLocation not supported", ELL_ERROR);
1701#endif 1701#endif
1702 return 0; 1702 return 0;
1703} 1703}
1704 1704
1705inline void COpenGLExtensionHandler::extGlUniform1fv(GLint loc, GLsizei count, const GLfloat *v) 1705inline void COpenGLExtensionHandler::extGlUniform1fv(GLint loc, GLsizei count, const GLfloat *v)
1706{ 1706{
1707#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1707#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1708 if (pGlUniform1fvARB) 1708 if (pGlUniform1fvARB)
1709 pGlUniform1fvARB(loc, count, v); 1709 pGlUniform1fvARB(loc, count, v);
1710#elif defined(GL_ARB_shader_objects) 1710#elif defined(GL_ARB_shader_objects)
1711 glUniform1fvARB(loc, count, v); 1711 glUniform1fvARB(loc, count, v);
1712#else 1712#else
1713 os::Printer::log("glUniform1fv not supported", ELL_ERROR); 1713 os::Printer::log("glUniform1fv not supported", ELL_ERROR);
1714#endif 1714#endif
1715} 1715}
1716 1716
1717inline void COpenGLExtensionHandler::extGlUniform2fv(GLint loc, GLsizei count, const GLfloat *v) 1717inline void COpenGLExtensionHandler::extGlUniform2fv(GLint loc, GLsizei count, const GLfloat *v)
1718{ 1718{
1719#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1719#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1720 if (pGlUniform2fvARB) 1720 if (pGlUniform2fvARB)
1721 pGlUniform2fvARB(loc, count, v); 1721 pGlUniform2fvARB(loc, count, v);
1722#elif defined(GL_ARB_shader_objects) 1722#elif defined(GL_ARB_shader_objects)
1723 glUniform2fvARB(loc, count, v); 1723 glUniform2fvARB(loc, count, v);
1724#else 1724#else
1725 os::Printer::log("glUniform2fv not supported", ELL_ERROR); 1725 os::Printer::log("glUniform2fv not supported", ELL_ERROR);
1726#endif 1726#endif
1727} 1727}
1728 1728
1729inline void COpenGLExtensionHandler::extGlUniform3fv(GLint loc, GLsizei count, const GLfloat *v) 1729inline void COpenGLExtensionHandler::extGlUniform3fv(GLint loc, GLsizei count, const GLfloat *v)
1730{ 1730{
1731#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1731#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1732 if (pGlUniform3fvARB) 1732 if (pGlUniform3fvARB)
1733 pGlUniform3fvARB(loc, count, v); 1733 pGlUniform3fvARB(loc, count, v);
1734#elif defined(GL_ARB_shader_objects) 1734#elif defined(GL_ARB_shader_objects)
1735 glUniform3fvARB(loc, count, v); 1735 glUniform3fvARB(loc, count, v);
1736#else 1736#else
1737 os::Printer::log("glUniform3fv not supported", ELL_ERROR); 1737 os::Printer::log("glUniform3fv not supported", ELL_ERROR);
1738#endif 1738#endif
1739} 1739}
1740 1740
1741inline void COpenGLExtensionHandler::extGlUniform4fv(GLint loc, GLsizei count, const GLfloat *v) 1741inline void COpenGLExtensionHandler::extGlUniform4fv(GLint loc, GLsizei count, const GLfloat *v)
1742{ 1742{
1743#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1743#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1744 if (pGlUniform4fvARB) 1744 if (pGlUniform4fvARB)
1745 pGlUniform4fvARB(loc, count, v); 1745 pGlUniform4fvARB(loc, count, v);
1746#elif defined(GL_ARB_shader_objects) 1746#elif defined(GL_ARB_shader_objects)
1747 glUniform4fvARB(loc, count, v); 1747 glUniform4fvARB(loc, count, v);
1748#else 1748#else
1749 os::Printer::log("glUniform4fv not supported", ELL_ERROR); 1749 os::Printer::log("glUniform4fv not supported", ELL_ERROR);
1750#endif 1750#endif
1751} 1751}
1752 1752
1753inline void COpenGLExtensionHandler::extGlUniform1iv(GLint loc, GLsizei count, const GLint *v) 1753inline void COpenGLExtensionHandler::extGlUniform1iv(GLint loc, GLsizei count, const GLint *v)
1754{ 1754{
1755#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1755#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1756 if (pGlUniform1ivARB) 1756 if (pGlUniform1ivARB)
1757 pGlUniform1ivARB(loc, count, v); 1757 pGlUniform1ivARB(loc, count, v);
1758#elif defined(GL_ARB_shader_objects) 1758#elif defined(GL_ARB_shader_objects)
1759 glUniform1ivARB(loc, count, v); 1759 glUniform1ivARB(loc, count, v);
1760#else 1760#else
1761 os::Printer::log("glUniform1iv not supported", ELL_ERROR); 1761 os::Printer::log("glUniform1iv not supported", ELL_ERROR);
1762#endif 1762#endif
1763} 1763}
1764 1764
1765inline void COpenGLExtensionHandler::extGlUniform2iv(GLint loc, GLsizei count, const GLint *v) 1765inline void COpenGLExtensionHandler::extGlUniform2iv(GLint loc, GLsizei count, const GLint *v)
1766{ 1766{
1767#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1767#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1768 if (pGlUniform2ivARB) 1768 if (pGlUniform2ivARB)
1769 pGlUniform2ivARB(loc, count, v); 1769 pGlUniform2ivARB(loc, count, v);
1770#elif defined(GL_ARB_shader_objects) 1770#elif defined(GL_ARB_shader_objects)
1771 glUniform2ivARB(loc, count, v); 1771 glUniform2ivARB(loc, count, v);
1772#else 1772#else
1773 os::Printer::log("glUniform2iv not supported", ELL_ERROR); 1773 os::Printer::log("glUniform2iv not supported", ELL_ERROR);
1774#endif 1774#endif
1775} 1775}
1776 1776
1777inline void COpenGLExtensionHandler::extGlUniform3iv(GLint loc, GLsizei count, const GLint *v) 1777inline void COpenGLExtensionHandler::extGlUniform3iv(GLint loc, GLsizei count, const GLint *v)
1778{ 1778{
1779#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1779#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1780 if (pGlUniform3ivARB) 1780 if (pGlUniform3ivARB)
1781 pGlUniform3ivARB(loc, count, v); 1781 pGlUniform3ivARB(loc, count, v);
1782#elif defined(GL_ARB_shader_objects) 1782#elif defined(GL_ARB_shader_objects)
1783 glUniform3ivARB(loc, count, v); 1783 glUniform3ivARB(loc, count, v);
1784#else 1784#else
1785 os::Printer::log("glUniform3iv not supported", ELL_ERROR); 1785 os::Printer::log("glUniform3iv not supported", ELL_ERROR);
1786#endif 1786#endif
1787} 1787}
1788 1788
1789inline void COpenGLExtensionHandler::extGlUniform4iv(GLint loc, GLsizei count, const GLint *v) 1789inline void COpenGLExtensionHandler::extGlUniform4iv(GLint loc, GLsizei count, const GLint *v)
1790{ 1790{
1791#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1791#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1792 if (pGlUniform4ivARB) 1792 if (pGlUniform4ivARB)
1793 pGlUniform4ivARB(loc, count, v); 1793 pGlUniform4ivARB(loc, count, v);
1794#elif defined(GL_ARB_shader_objects) 1794#elif defined(GL_ARB_shader_objects)
1795 glUniform4ivARB(loc, count, v); 1795 glUniform4ivARB(loc, count, v);
1796#else 1796#else
1797 os::Printer::log("glUniform4iv not supported", ELL_ERROR); 1797 os::Printer::log("glUniform4iv not supported", ELL_ERROR);
1798#endif 1798#endif
1799} 1799}
1800 1800
1801inline void COpenGLExtensionHandler::extGlUniformMatrix2fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v) 1801inline void COpenGLExtensionHandler::extGlUniformMatrix2fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v)
1802{ 1802{
1803#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1803#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1804 if (pGlUniformMatrix2fvARB) 1804 if (pGlUniformMatrix2fvARB)
1805 pGlUniformMatrix2fvARB(loc, count, transpose, v); 1805 pGlUniformMatrix2fvARB(loc, count, transpose, v);
1806#elif defined(GL_ARB_shader_objects) 1806#elif defined(GL_ARB_shader_objects)
1807 glUniformMatrix2fvARB(loc, count, transpose, v); 1807 glUniformMatrix2fvARB(loc, count, transpose, v);
1808#else 1808#else
1809 os::Printer::log("glUniformMatrix2fv not supported", ELL_ERROR); 1809 os::Printer::log("glUniformMatrix2fv not supported", ELL_ERROR);
1810#endif 1810#endif
1811} 1811}
1812 1812
1813inline void COpenGLExtensionHandler::extGlUniformMatrix3fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v) 1813inline void COpenGLExtensionHandler::extGlUniformMatrix3fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v)
1814{ 1814{
1815#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1815#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1816 if (pGlUniformMatrix3fvARB) 1816 if (pGlUniformMatrix3fvARB)
1817 pGlUniformMatrix3fvARB(loc, count, transpose, v); 1817 pGlUniformMatrix3fvARB(loc, count, transpose, v);
1818#elif defined(GL_ARB_shader_objects) 1818#elif defined(GL_ARB_shader_objects)
1819 glUniformMatrix3fvARB(loc, count, transpose, v); 1819 glUniformMatrix3fvARB(loc, count, transpose, v);
1820#else 1820#else
1821 os::Printer::log("glUniformMatrix3fv not supported", ELL_ERROR); 1821 os::Printer::log("glUniformMatrix3fv not supported", ELL_ERROR);
1822#endif 1822#endif
1823} 1823}
1824 1824
1825inline void COpenGLExtensionHandler::extGlUniformMatrix4fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v) 1825inline void COpenGLExtensionHandler::extGlUniformMatrix4fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v)
1826{ 1826{
1827#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1827#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1828 if (pGlUniformMatrix4fvARB) 1828 if (pGlUniformMatrix4fvARB)
1829 pGlUniformMatrix4fvARB(loc, count, transpose, v); 1829 pGlUniformMatrix4fvARB(loc, count, transpose, v);
1830#elif defined(GL_ARB_shader_objects) 1830#elif defined(GL_ARB_shader_objects)
1831 glUniformMatrix4fvARB(loc, count, transpose, v); 1831 glUniformMatrix4fvARB(loc, count, transpose, v);
1832#else 1832#else
1833 os::Printer::log("glUniformMatrix4fv not supported", ELL_ERROR); 1833 os::Printer::log("glUniformMatrix4fv not supported", ELL_ERROR);
1834#endif 1834#endif
1835} 1835}
1836 1836
1837inline void COpenGLExtensionHandler::extGlGetActiveUniformARB(GLhandleARB program, 1837inline void COpenGLExtensionHandler::extGlGetActiveUniformARB(GLhandleARB program,
1838 GLuint index, GLsizei maxlength, GLsizei *length, 1838 GLuint index, GLsizei maxlength, GLsizei *length,
1839 GLint *size, GLenum *type, GLcharARB *name) 1839 GLint *size, GLenum *type, GLcharARB *name)
1840{ 1840{
1841 if (length) 1841 if (length)
1842 *length=0; 1842 *length=0;
1843#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1843#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1844 if (pGlGetActiveUniformARB) 1844 if (pGlGetActiveUniformARB)
1845 pGlGetActiveUniformARB(program, index, maxlength, length, size, type, name); 1845 pGlGetActiveUniformARB(program, index, maxlength, length, size, type, name);
1846#elif defined(GL_ARB_shader_objects) 1846#elif defined(GL_ARB_shader_objects)
1847 glGetActiveUniformARB(program, index, maxlength, length, size, type, name); 1847 glGetActiveUniformARB(program, index, maxlength, length, size, type, name);
1848#else 1848#else
1849 os::Printer::log("glGetActiveUniform not supported", ELL_ERROR); 1849 os::Printer::log("glGetActiveUniform not supported", ELL_ERROR);
1850#endif 1850#endif
1851} 1851}
1852 1852
1853inline void COpenGLExtensionHandler::extGlGetActiveUniform(GLuint program, 1853inline void COpenGLExtensionHandler::extGlGetActiveUniform(GLuint program,
1854 GLuint index, GLsizei maxlength, GLsizei *length, 1854 GLuint index, GLsizei maxlength, GLsizei *length,
1855 GLint *size, GLenum *type, GLchar *name) 1855 GLint *size, GLenum *type, GLchar *name)
1856{ 1856{
1857 if (length) 1857 if (length)
1858 *length=0; 1858 *length=0;
1859#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1859#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1860 if (pGlGetActiveUniform) 1860 if (pGlGetActiveUniform)
1861 pGlGetActiveUniform(program, index, maxlength, length, size, type, name); 1861 pGlGetActiveUniform(program, index, maxlength, length, size, type, name);
1862#elif defined(GL_VERSION_2_0) 1862#elif defined(GL_VERSION_2_0)
1863 glGetActiveUniform(program, index, maxlength, length, size, type, name); 1863 glGetActiveUniform(program, index, maxlength, length, size, type, name);
1864#else 1864#else
1865 os::Printer::log("glGetActiveUniform not supported", ELL_ERROR); 1865 os::Printer::log("glGetActiveUniform not supported", ELL_ERROR);
1866#endif 1866#endif
1867} 1867}
1868 1868
1869inline void COpenGLExtensionHandler::extGlPointParameterf(GLint loc, GLfloat f) 1869inline void COpenGLExtensionHandler::extGlPointParameterf(GLint loc, GLfloat f)
1870{ 1870{
1871#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1871#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1872 if (pGlPointParameterfARB) 1872 if (pGlPointParameterfARB)
1873 pGlPointParameterfARB(loc, f); 1873 pGlPointParameterfARB(loc, f);
1874#elif defined(GL_ARB_point_parameters) 1874#elif defined(GL_ARB_point_parameters)
1875 glPointParameterfARB(loc, f); 1875 glPointParameterfARB(loc, f);
1876#else 1876#else
1877 os::Printer::log("glPointParameterf not supported", ELL_ERROR); 1877 os::Printer::log("glPointParameterf not supported", ELL_ERROR);
1878#endif 1878#endif
1879} 1879}
1880 1880
1881inline void COpenGLExtensionHandler::extGlPointParameterfv(GLint loc, const GLfloat *v) 1881inline void COpenGLExtensionHandler::extGlPointParameterfv(GLint loc, const GLfloat *v)
1882{ 1882{
1883#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1883#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1884 if (pGlPointParameterfvARB) 1884 if (pGlPointParameterfvARB)
1885 pGlPointParameterfvARB(loc, v); 1885 pGlPointParameterfvARB(loc, v);
1886#elif defined(GL_ARB_point_parameters) 1886#elif defined(GL_ARB_point_parameters)
1887 glPointParameterfvARB(loc, v); 1887 glPointParameterfvARB(loc, v);
1888#else 1888#else
1889 os::Printer::log("glPointParameterfv not supported", ELL_ERROR); 1889 os::Printer::log("glPointParameterfv not supported", ELL_ERROR);
1890#endif 1890#endif
1891} 1891}
1892 1892
1893inline void COpenGLExtensionHandler::extGlStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask) 1893inline void COpenGLExtensionHandler::extGlStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)
1894{ 1894{
1895#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1895#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1896 if (pGlStencilFuncSeparate) 1896 if (pGlStencilFuncSeparate)
1897 pGlStencilFuncSeparate(frontfunc, backfunc, ref, mask); 1897 pGlStencilFuncSeparate(frontfunc, backfunc, ref, mask);
1898 else if (pGlStencilFuncSeparateATI) 1898 else if (pGlStencilFuncSeparateATI)
1899 pGlStencilFuncSeparateATI(frontfunc, backfunc, ref, mask); 1899 pGlStencilFuncSeparateATI(frontfunc, backfunc, ref, mask);
1900#elif defined(GL_VERSION_2_0) 1900#elif defined(GL_VERSION_2_0)
1901 glStencilFuncSeparate(frontfunc, backfunc, ref, mask); 1901 glStencilFuncSeparate(frontfunc, backfunc, ref, mask);
1902#elif defined(GL_ATI_separate_stencil) 1902#elif defined(GL_ATI_separate_stencil)
1903 glStencilFuncSeparateATI(frontfunc, backfunc, ref, mask); 1903 glStencilFuncSeparateATI(frontfunc, backfunc, ref, mask);
1904#else 1904#else
1905 os::Printer::log("glStencilFuncSeparate not supported", ELL_ERROR); 1905 os::Printer::log("glStencilFuncSeparate not supported", ELL_ERROR);
1906#endif 1906#endif
1907} 1907}
1908 1908
1909inline void COpenGLExtensionHandler::extGlStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass) 1909inline void COpenGLExtensionHandler::extGlStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
1910{ 1910{
1911#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1911#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1912 if (pGlStencilOpSeparate) 1912 if (pGlStencilOpSeparate)
1913 pGlStencilOpSeparate(face, fail, zfail, zpass); 1913 pGlStencilOpSeparate(face, fail, zfail, zpass);
1914 else if (pGlStencilOpSeparateATI) 1914 else if (pGlStencilOpSeparateATI)
1915 pGlStencilOpSeparateATI(face, fail, zfail, zpass); 1915 pGlStencilOpSeparateATI(face, fail, zfail, zpass);
1916#elif defined(GL_VERSION_2_0) 1916#elif defined(GL_VERSION_2_0)
1917 glStencilOpSeparate(face, fail, zfail, zpass); 1917 glStencilOpSeparate(face, fail, zfail, zpass);
1918#elif defined(GL_ATI_separate_stencil) 1918#elif defined(GL_ATI_separate_stencil)
1919 glStencilOpSeparateATI(face, fail, zfail, zpass); 1919 glStencilOpSeparateATI(face, fail, zfail, zpass);
1920#else 1920#else
1921 os::Printer::log("glStencilOpSeparate not supported", ELL_ERROR); 1921 os::Printer::log("glStencilOpSeparate not supported", ELL_ERROR);
1922#endif 1922#endif
1923} 1923}
1924 1924
1925inline void COpenGLExtensionHandler::extGlCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, 1925inline void COpenGLExtensionHandler::extGlCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width,
1926 GLsizei height, GLint border, GLsizei imageSize, const void* data) 1926 GLsizei height, GLint border, GLsizei imageSize, const void* data)
1927{ 1927{
1928#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1928#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1929 if (pGlCompressedTexImage2D) 1929 if (pGlCompressedTexImage2D)
1930 pGlCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); 1930 pGlCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
1931#elif defined(GL_ARB_texture_compression) 1931#elif defined(GL_ARB_texture_compression)
1932 glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); 1932 glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
1933#else 1933#else
1934 os::Printer::log("glCompressedTexImage2D not supported", ELL_ERROR); 1934 os::Printer::log("glCompressedTexImage2D not supported", ELL_ERROR);
1935#endif 1935#endif
1936} 1936}
1937 1937
1938inline void COpenGLExtensionHandler::extGlBindFramebuffer(GLenum target, GLuint framebuffer) 1938inline void COpenGLExtensionHandler::extGlBindFramebuffer(GLenum target, GLuint framebuffer)
1939{ 1939{
1940#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1940#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1941 if (pGlBindFramebuffer) 1941 if (pGlBindFramebuffer)
1942 pGlBindFramebuffer(target, framebuffer); 1942 pGlBindFramebuffer(target, framebuffer);
1943 else if (pGlBindFramebufferEXT) 1943 else if (pGlBindFramebufferEXT)
1944 pGlBindFramebufferEXT(target, framebuffer); 1944 pGlBindFramebufferEXT(target, framebuffer);
1945#elif defined(GL_ARB_framebuffer_object) 1945#elif defined(GL_ARB_framebuffer_object)
1946 glBindFramebuffer(target, framebuffer); 1946 glBindFramebuffer(target, framebuffer);
1947#elif defined(GL_EXT_framebuffer_object) 1947#elif defined(GL_EXT_framebuffer_object)
1948 glBindFramebufferEXT(target, framebuffer); 1948 glBindFramebufferEXT(target, framebuffer);
1949#else 1949#else
1950 os::Printer::log("glBindFramebuffer not supported", ELL_ERROR); 1950 os::Printer::log("glBindFramebuffer not supported", ELL_ERROR);
1951#endif 1951#endif
1952} 1952}
1953 1953
1954inline void COpenGLExtensionHandler::extGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) 1954inline void COpenGLExtensionHandler::extGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers)
1955{ 1955{
1956#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1956#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1957 if (pGlDeleteFramebuffers) 1957 if (pGlDeleteFramebuffers)
1958 pGlDeleteFramebuffers(n, framebuffers); 1958 pGlDeleteFramebuffers(n, framebuffers);
1959 else if (pGlDeleteFramebuffersEXT) 1959 else if (pGlDeleteFramebuffersEXT)
1960 pGlDeleteFramebuffersEXT(n, framebuffers); 1960 pGlDeleteFramebuffersEXT(n, framebuffers);
1961#elif defined(GL_ARB_framebuffer_object) 1961#elif defined(GL_ARB_framebuffer_object)
1962 glDeleteFramebuffers(n, framebuffers); 1962 glDeleteFramebuffers(n, framebuffers);
1963#elif defined(GL_EXT_framebuffer_object) 1963#elif defined(GL_EXT_framebuffer_object)
1964 glDeleteFramebuffersEXT(n, framebuffers); 1964 glDeleteFramebuffersEXT(n, framebuffers);
1965#else 1965#else
1966 os::Printer::log("glDeleteFramebuffers not supported", ELL_ERROR); 1966 os::Printer::log("glDeleteFramebuffers not supported", ELL_ERROR);
1967#endif 1967#endif
1968} 1968}
1969 1969
1970inline void COpenGLExtensionHandler::extGlGenFramebuffers(GLsizei n, GLuint *framebuffers) 1970inline void COpenGLExtensionHandler::extGlGenFramebuffers(GLsizei n, GLuint *framebuffers)
1971{ 1971{
1972 if (framebuffers) 1972 if (framebuffers)
1973 memset(framebuffers,0,n*sizeof(GLuint)); 1973 memset(framebuffers,0,n*sizeof(GLuint));
1974#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1974#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1975 if (pGlGenFramebuffers) 1975 if (pGlGenFramebuffers)
1976 pGlGenFramebuffers(n, framebuffers); 1976 pGlGenFramebuffers(n, framebuffers);
1977 else if (pGlGenFramebuffersEXT) 1977 else if (pGlGenFramebuffersEXT)
1978 pGlGenFramebuffersEXT(n, framebuffers); 1978 pGlGenFramebuffersEXT(n, framebuffers);
1979#elif defined(GL_ARB_framebuffer_object) 1979#elif defined(GL_ARB_framebuffer_object)
1980 glGenFramebuffers(n, framebuffers); 1980 glGenFramebuffers(n, framebuffers);
1981#elif defined(GL_EXT_framebuffer_object) 1981#elif defined(GL_EXT_framebuffer_object)
1982 glGenFramebuffersEXT(n, framebuffers); 1982 glGenFramebuffersEXT(n, framebuffers);
1983#else 1983#else
1984 os::Printer::log("glGenFramebuffers not supported", ELL_ERROR); 1984 os::Printer::log("glGenFramebuffers not supported", ELL_ERROR);
1985#endif 1985#endif
1986} 1986}
1987 1987
1988inline GLenum COpenGLExtensionHandler::extGlCheckFramebufferStatus(GLenum target) 1988inline GLenum COpenGLExtensionHandler::extGlCheckFramebufferStatus(GLenum target)
1989{ 1989{
1990#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 1990#ifdef _IRR_OPENGL_USE_EXTPOINTER_
1991 if (pGlCheckFramebufferStatus) 1991 if (pGlCheckFramebufferStatus)
1992 return pGlCheckFramebufferStatus(target); 1992 return pGlCheckFramebufferStatus(target);
1993 else if (pGlCheckFramebufferStatusEXT) 1993 else if (pGlCheckFramebufferStatusEXT)
1994 return pGlCheckFramebufferStatusEXT(target); 1994 return pGlCheckFramebufferStatusEXT(target);
1995 else 1995 else
1996 return 0; 1996 return 0;
1997#elif defined(GL_ARB_framebuffer_object) 1997#elif defined(GL_ARB_framebuffer_object)
1998 return glCheckFramebufferStatus(target); 1998 return glCheckFramebufferStatus(target);
1999#elif defined(GL_EXT_framebuffer_object) 1999#elif defined(GL_EXT_framebuffer_object)
2000 return glCheckFramebufferStatusEXT(target); 2000 return glCheckFramebufferStatusEXT(target);
2001#else 2001#else
2002 os::Printer::log("glCheckFramebufferStatus not supported", ELL_ERROR); 2002 os::Printer::log("glCheckFramebufferStatus not supported", ELL_ERROR);
2003 return 0; 2003 return 0;
2004#endif 2004#endif
2005} 2005}
2006 2006
2007inline void COpenGLExtensionHandler::extGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) 2007inline void COpenGLExtensionHandler::extGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
2008{ 2008{
2009#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2009#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2010 if (pGlFramebufferTexture2D) 2010 if (pGlFramebufferTexture2D)
2011 pGlFramebufferTexture2D(target, attachment, textarget, texture, level); 2011 pGlFramebufferTexture2D(target, attachment, textarget, texture, level);
2012 else if (pGlFramebufferTexture2DEXT) 2012 else if (pGlFramebufferTexture2DEXT)
2013 pGlFramebufferTexture2DEXT(target, attachment, textarget, texture, level); 2013 pGlFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
2014#elif defined(GL_ARB_framebuffer_object) 2014#elif defined(GL_ARB_framebuffer_object)
2015 glFramebufferTexture2D(target, attachment, textarget, texture, level); 2015 glFramebufferTexture2D(target, attachment, textarget, texture, level);
2016#elif defined(GL_EXT_framebuffer_object) 2016#elif defined(GL_EXT_framebuffer_object)
2017 glFramebufferTexture2DEXT(target, attachment, textarget, texture, level); 2017 glFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
2018#else 2018#else
2019 os::Printer::log("glFramebufferTexture2D not supported", ELL_ERROR); 2019 os::Printer::log("glFramebufferTexture2D not supported", ELL_ERROR);
2020#endif 2020#endif
2021} 2021}
2022 2022
2023inline void COpenGLExtensionHandler::extGlBindRenderbuffer(GLenum target, GLuint renderbuffer) 2023inline void COpenGLExtensionHandler::extGlBindRenderbuffer(GLenum target, GLuint renderbuffer)
2024{ 2024{
2025#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2025#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2026 if (pGlBindRenderbuffer) 2026 if (pGlBindRenderbuffer)
2027 pGlBindRenderbuffer(target, renderbuffer); 2027 pGlBindRenderbuffer(target, renderbuffer);
2028 else if (pGlBindRenderbufferEXT) 2028 else if (pGlBindRenderbufferEXT)
2029 pGlBindRenderbufferEXT(target, renderbuffer); 2029 pGlBindRenderbufferEXT(target, renderbuffer);
2030#elif defined(GL_ARB_framebuffer_object) 2030#elif defined(GL_ARB_framebuffer_object)
2031 glBindRenderbuffer(target, renderbuffer); 2031 glBindRenderbuffer(target, renderbuffer);
2032#elif defined(GL_EXT_framebuffer_object) 2032#elif defined(GL_EXT_framebuffer_object)
2033 glBindRenderbufferEXT(target, renderbuffer); 2033 glBindRenderbufferEXT(target, renderbuffer);
2034#else 2034#else
2035 os::Printer::log("glBindRenderbuffer not supported", ELL_ERROR); 2035 os::Printer::log("glBindRenderbuffer not supported", ELL_ERROR);
2036#endif 2036#endif
2037} 2037}
2038 2038
2039inline void COpenGLExtensionHandler::extGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) 2039inline void COpenGLExtensionHandler::extGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers)
2040{ 2040{
2041#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2041#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2042 if (pGlDeleteRenderbuffers) 2042 if (pGlDeleteRenderbuffers)
2043 pGlDeleteRenderbuffers(n, renderbuffers); 2043 pGlDeleteRenderbuffers(n, renderbuffers);
2044 else if (pGlDeleteRenderbuffersEXT) 2044 else if (pGlDeleteRenderbuffersEXT)
2045 pGlDeleteRenderbuffersEXT(n, renderbuffers); 2045 pGlDeleteRenderbuffersEXT(n, renderbuffers);
2046#elif defined(GL_ARB_framebuffer_object) 2046#elif defined(GL_ARB_framebuffer_object)
2047 glDeleteRenderbuffers(n, renderbuffers); 2047 glDeleteRenderbuffers(n, renderbuffers);
2048#elif defined(GL_EXT_framebuffer_object) 2048#elif defined(GL_EXT_framebuffer_object)
2049 glDeleteRenderbuffersEXT(n, renderbuffers); 2049 glDeleteRenderbuffersEXT(n, renderbuffers);
2050#else 2050#else
2051 os::Printer::log("glDeleteRenderbuffers not supported", ELL_ERROR); 2051 os::Printer::log("glDeleteRenderbuffers not supported", ELL_ERROR);
2052#endif 2052#endif
2053} 2053}
2054 2054
2055inline void COpenGLExtensionHandler::extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers) 2055inline void COpenGLExtensionHandler::extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers)
2056{ 2056{
2057 if (renderbuffers) 2057 if (renderbuffers)
2058 memset(renderbuffers,0,n*sizeof(GLuint)); 2058 memset(renderbuffers,0,n*sizeof(GLuint));
2059#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2059#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2060 if (pGlGenRenderbuffers) 2060 if (pGlGenRenderbuffers)
2061 pGlGenRenderbuffers(n, renderbuffers); 2061 pGlGenRenderbuffers(n, renderbuffers);
2062 else if (pGlGenRenderbuffersEXT) 2062 else if (pGlGenRenderbuffersEXT)
2063 pGlGenRenderbuffersEXT(n, renderbuffers); 2063 pGlGenRenderbuffersEXT(n, renderbuffers);
2064#elif defined(GL_ARB_framebuffer_object) 2064#elif defined(GL_ARB_framebuffer_object)
2065 glGenRenderbuffers(n, renderbuffers); 2065 glGenRenderbuffers(n, renderbuffers);
2066#elif defined(GL_EXT_framebuffer_object) 2066#elif defined(GL_EXT_framebuffer_object)
2067 glGenRenderbuffersEXT(n, renderbuffers); 2067 glGenRenderbuffersEXT(n, renderbuffers);
2068#else 2068#else
2069 os::Printer::log("glGenRenderbuffers not supported", ELL_ERROR); 2069 os::Printer::log("glGenRenderbuffers not supported", ELL_ERROR);
2070#endif 2070#endif
2071} 2071}
2072 2072
2073inline void COpenGLExtensionHandler::extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) 2073inline void COpenGLExtensionHandler::extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
2074{ 2074{
2075#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2075#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2076 if (pGlRenderbufferStorage) 2076 if (pGlRenderbufferStorage)
2077 pGlRenderbufferStorage(target, internalformat, width, height); 2077 pGlRenderbufferStorage(target, internalformat, width, height);
2078 else if (pGlRenderbufferStorageEXT) 2078 else if (pGlRenderbufferStorageEXT)
2079 pGlRenderbufferStorageEXT(target, internalformat, width, height); 2079 pGlRenderbufferStorageEXT(target, internalformat, width, height);
2080#elif defined(GL_ARB_framebuffer_object) 2080#elif defined(GL_ARB_framebuffer_object)
2081 glRenderbufferStorage(target, internalformat, width, height); 2081 glRenderbufferStorage(target, internalformat, width, height);
2082#elif defined(GL_EXT_framebuffer_object) 2082#elif defined(GL_EXT_framebuffer_object)
2083 glRenderbufferStorageEXT(target, internalformat, width, height); 2083 glRenderbufferStorageEXT(target, internalformat, width, height);
2084#else 2084#else
2085 os::Printer::log("glRenderbufferStorage not supported", ELL_ERROR); 2085 os::Printer::log("glRenderbufferStorage not supported", ELL_ERROR);
2086#endif 2086#endif
2087} 2087}
2088 2088
2089inline void COpenGLExtensionHandler::extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) 2089inline void COpenGLExtensionHandler::extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
2090{ 2090{
2091#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2091#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2092 if (pGlFramebufferRenderbuffer) 2092 if (pGlFramebufferRenderbuffer)
2093 pGlFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); 2093 pGlFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
2094 else if (pGlFramebufferRenderbufferEXT) 2094 else if (pGlFramebufferRenderbufferEXT)
2095 pGlFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer); 2095 pGlFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);
2096#elif defined(GL_ARB_framebuffer_object) 2096#elif defined(GL_ARB_framebuffer_object)
2097 glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); 2097 glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
2098#elif defined(GL_EXT_framebuffer_object) 2098#elif defined(GL_EXT_framebuffer_object)
2099 glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer); 2099 glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);
2100#else 2100#else
2101 os::Printer::log("glFramebufferRenderbuffer not supported", ELL_ERROR); 2101 os::Printer::log("glFramebufferRenderbuffer not supported", ELL_ERROR);
2102#endif 2102#endif
2103} 2103}
2104 2104
2105inline void COpenGLExtensionHandler::extGlGenerateMipmap(GLenum target) 2105inline void COpenGLExtensionHandler::extGlGenerateMipmap(GLenum target)
2106{ 2106{
2107#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2107#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2108 if (pGlGenerateMipmap) 2108 if (pGlGenerateMipmap)
2109 pGlGenerateMipmap(target); 2109 pGlGenerateMipmap(target);
2110 else if (pGlGenerateMipmapEXT) 2110 else if (pGlGenerateMipmapEXT)
2111 pGlGenerateMipmapEXT(target); 2111 pGlGenerateMipmapEXT(target);
2112#elif defined(GL_ARB_framebuffer_object) 2112#elif defined(GL_ARB_framebuffer_object)
2113 glGenerateMipmap(target); 2113 glGenerateMipmap(target);
2114#elif defined(GL_EXT_framebuffer_object) 2114#elif defined(GL_EXT_framebuffer_object)
2115 glGenerateMipmapEXT(target); 2115 glGenerateMipmapEXT(target);
2116#else 2116#else
2117 os::Printer::log("glGenerateMipmap not supported", ELL_ERROR); 2117 os::Printer::log("glGenerateMipmap not supported", ELL_ERROR);
2118#endif 2118#endif
2119} 2119}
2120 2120
2121inline void COpenGLExtensionHandler::extGlActiveStencilFace(GLenum face) 2121inline void COpenGLExtensionHandler::extGlActiveStencilFace(GLenum face)
2122{ 2122{
2123#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2123#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2124 if (pGlActiveStencilFaceEXT) 2124 if (pGlActiveStencilFaceEXT)
2125 pGlActiveStencilFaceEXT(face); 2125 pGlActiveStencilFaceEXT(face);
2126#elif defined(GL_EXT_stencil_two_side) 2126#elif defined(GL_EXT_stencil_two_side)
2127 glActiveStencilFaceEXT(face); 2127 glActiveStencilFaceEXT(face);
2128#else 2128#else
2129 os::Printer::log("glActiveStencilFace not supported", ELL_ERROR); 2129 os::Printer::log("glActiveStencilFace not supported", ELL_ERROR);
2130#endif 2130#endif
2131} 2131}
2132 2132
2133inline void COpenGLExtensionHandler::extGlDrawBuffers(GLsizei n, const GLenum *bufs) 2133inline void COpenGLExtensionHandler::extGlDrawBuffers(GLsizei n, const GLenum *bufs)
2134{ 2134{
2135#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2135#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2136 if (pGlDrawBuffersARB) 2136 if (pGlDrawBuffersARB)
2137 pGlDrawBuffersARB(n, bufs); 2137 pGlDrawBuffersARB(n, bufs);
2138 else if (pGlDrawBuffersATI) 2138 else if (pGlDrawBuffersATI)
2139 pGlDrawBuffersATI(n, bufs); 2139 pGlDrawBuffersATI(n, bufs);
2140#elif defined(GL_ARB_draw_buffers) 2140#elif defined(GL_ARB_draw_buffers)
2141 glDrawBuffersARB(n, bufs); 2141 glDrawBuffersARB(n, bufs);
2142#elif defined(GL_ATI_draw_buffers) 2142#elif defined(GL_ATI_draw_buffers)
2143 glDrawBuffersATI(n, bufs); 2143 glDrawBuffersATI(n, bufs);
2144#else 2144#else
2145 os::Printer::log("glDrawBuffers not supported", ELL_ERROR); 2145 os::Printer::log("glDrawBuffers not supported", ELL_ERROR);
2146#endif 2146#endif
2147} 2147}
2148 2148
2149 2149
2150inline void COpenGLExtensionHandler::extGlGenBuffers(GLsizei n, GLuint *buffers) 2150inline void COpenGLExtensionHandler::extGlGenBuffers(GLsizei n, GLuint *buffers)
2151{ 2151{
2152 if (buffers) 2152 if (buffers)
2153 memset(buffers,0,n*sizeof(GLuint)); 2153 memset(buffers,0,n*sizeof(GLuint));
2154#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2154#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2155 if (pGlGenBuffersARB) 2155 if (pGlGenBuffersARB)
2156 pGlGenBuffersARB(n, buffers); 2156 pGlGenBuffersARB(n, buffers);
2157#elif defined(GL_ARB_vertex_buffer_object) 2157#elif defined(GL_ARB_vertex_buffer_object)
2158 glGenBuffers(n, buffers); 2158 glGenBuffers(n, buffers);
2159#else 2159#else
2160 os::Printer::log("glGenBuffers not supported", ELL_ERROR); 2160 os::Printer::log("glGenBuffers not supported", ELL_ERROR);
2161#endif 2161#endif
2162} 2162}
2163 2163
2164inline void COpenGLExtensionHandler::extGlBindBuffer(GLenum target, GLuint buffer) 2164inline void COpenGLExtensionHandler::extGlBindBuffer(GLenum target, GLuint buffer)
2165{ 2165{
2166#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2166#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2167 if (pGlBindBufferARB) 2167 if (pGlBindBufferARB)
2168 pGlBindBufferARB(target, buffer); 2168 pGlBindBufferARB(target, buffer);
2169#elif defined(GL_ARB_vertex_buffer_object) 2169#elif defined(GL_ARB_vertex_buffer_object)
2170 glBindBuffer(target, buffer); 2170 glBindBuffer(target, buffer);
2171#else 2171#else
2172 os::Printer::log("glBindBuffer not supported", ELL_ERROR); 2172 os::Printer::log("glBindBuffer not supported", ELL_ERROR);
2173#endif 2173#endif
2174} 2174}
2175 2175
2176inline void COpenGLExtensionHandler::extGlBufferData(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage) 2176inline void COpenGLExtensionHandler::extGlBufferData(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage)
2177{ 2177{
2178#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2178#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2179 if (pGlBufferDataARB) 2179 if (pGlBufferDataARB)
2180 pGlBufferDataARB(target, size, data, usage); 2180 pGlBufferDataARB(target, size, data, usage);
2181#elif defined(GL_ARB_vertex_buffer_object) 2181#elif defined(GL_ARB_vertex_buffer_object)
2182 glBufferData(target, size, data, usage); 2182 glBufferData(target, size, data, usage);
2183#else 2183#else
2184 os::Printer::log("glBufferData not supported", ELL_ERROR); 2184 os::Printer::log("glBufferData not supported", ELL_ERROR);
2185#endif 2185#endif
2186} 2186}
2187 2187
2188inline void COpenGLExtensionHandler::extGlDeleteBuffers(GLsizei n, const GLuint *buffers) 2188inline void COpenGLExtensionHandler::extGlDeleteBuffers(GLsizei n, const GLuint *buffers)
2189{ 2189{
2190#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2190#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2191 if (pGlDeleteBuffersARB) 2191 if (pGlDeleteBuffersARB)
2192 pGlDeleteBuffersARB(n, buffers); 2192 pGlDeleteBuffersARB(n, buffers);
2193#elif defined(GL_ARB_vertex_buffer_object) 2193#elif defined(GL_ARB_vertex_buffer_object)
2194 glDeleteBuffers(n, buffers); 2194 glDeleteBuffers(n, buffers);
2195#else 2195#else
2196 os::Printer::log("glDeleteBuffers not supported", ELL_ERROR); 2196 os::Printer::log("glDeleteBuffers not supported", ELL_ERROR);
2197#endif 2197#endif
2198} 2198}
2199 2199
2200inline void COpenGLExtensionHandler::extGlBufferSubData(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data) 2200inline void COpenGLExtensionHandler::extGlBufferSubData(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data)
2201{ 2201{
2202#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2202#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2203 if (pGlBufferSubDataARB) 2203 if (pGlBufferSubDataARB)
2204 pGlBufferSubDataARB(target, offset, size, data); 2204 pGlBufferSubDataARB(target, offset, size, data);
2205#elif defined(GL_ARB_vertex_buffer_object) 2205#elif defined(GL_ARB_vertex_buffer_object)
2206 glBufferSubData(target, offset, size, data); 2206 glBufferSubData(target, offset, size, data);
2207#else 2207#else
2208 os::Printer::log("glBufferSubData not supported", ELL_ERROR); 2208 os::Printer::log("glBufferSubData not supported", ELL_ERROR);
2209#endif 2209#endif
2210} 2210}
2211 2211
2212inline void COpenGLExtensionHandler::extGlGetBufferSubData(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data) 2212inline void COpenGLExtensionHandler::extGlGetBufferSubData(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data)
2213{ 2213{
2214#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2214#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2215 if (pGlGetBufferSubDataARB) 2215 if (pGlGetBufferSubDataARB)
2216 pGlGetBufferSubDataARB(target, offset, size, data); 2216 pGlGetBufferSubDataARB(target, offset, size, data);
2217#elif defined(GL_ARB_vertex_buffer_object) 2217#elif defined(GL_ARB_vertex_buffer_object)
2218 glGetBufferSubData(target, offset, size, data); 2218 glGetBufferSubData(target, offset, size, data);
2219#else 2219#else
2220 os::Printer::log("glGetBufferSubData not supported", ELL_ERROR); 2220 os::Printer::log("glGetBufferSubData not supported", ELL_ERROR);
2221#endif 2221#endif
2222} 2222}
2223 2223
2224inline void *COpenGLExtensionHandler::extGlMapBuffer(GLenum target, GLenum access) 2224inline void *COpenGLExtensionHandler::extGlMapBuffer(GLenum target, GLenum access)
2225{ 2225{
2226#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2226#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2227 if (pGlMapBufferARB) 2227 if (pGlMapBufferARB)
2228 return pGlMapBufferARB(target, access); 2228 return pGlMapBufferARB(target, access);
2229 return 0; 2229 return 0;
2230#elif defined(GL_ARB_vertex_buffer_object) 2230#elif defined(GL_ARB_vertex_buffer_object)
2231 return glMapBuffer(target, access); 2231 return glMapBuffer(target, access);
2232#else 2232#else
2233 os::Printer::log("glMapBuffer not supported", ELL_ERROR); 2233 os::Printer::log("glMapBuffer not supported", ELL_ERROR);
2234 return 0; 2234 return 0;
2235#endif 2235#endif
2236} 2236}
2237 2237
2238inline GLboolean COpenGLExtensionHandler::extGlUnmapBuffer(GLenum target) 2238inline GLboolean COpenGLExtensionHandler::extGlUnmapBuffer(GLenum target)
2239{ 2239{
2240#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2240#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2241 if (pGlUnmapBufferARB) 2241 if (pGlUnmapBufferARB)
2242 return pGlUnmapBufferARB(target); 2242 return pGlUnmapBufferARB(target);
2243 return false; 2243 return false;
2244#elif defined(GL_ARB_vertex_buffer_object) 2244#elif defined(GL_ARB_vertex_buffer_object)
2245 return glUnmapBuffer(target); 2245 return glUnmapBuffer(target);
2246#else 2246#else
2247 os::Printer::log("glUnmapBuffer not supported", ELL_ERROR); 2247 os::Printer::log("glUnmapBuffer not supported", ELL_ERROR);
2248 return false; 2248 return false;
2249#endif 2249#endif
2250} 2250}
2251 2251
2252inline GLboolean COpenGLExtensionHandler::extGlIsBuffer(GLuint buffer) 2252inline GLboolean COpenGLExtensionHandler::extGlIsBuffer(GLuint buffer)
2253{ 2253{
2254#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2254#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2255 if (pGlIsBufferARB) 2255 if (pGlIsBufferARB)
2256 return pGlIsBufferARB(buffer); 2256 return pGlIsBufferARB(buffer);
2257 return false; 2257 return false;
2258#elif defined(GL_ARB_vertex_buffer_object) 2258#elif defined(GL_ARB_vertex_buffer_object)
2259 return glIsBuffer(buffer); 2259 return glIsBuffer(buffer);
2260#else 2260#else
2261 os::Printer::log("glDeleteBuffers not supported", ELL_ERROR); 2261 os::Printer::log("glDeleteBuffers not supported", ELL_ERROR);
2262 return false; 2262 return false;
2263#endif 2263#endif
2264} 2264}
2265 2265
2266inline void COpenGLExtensionHandler::extGlGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) 2266inline void COpenGLExtensionHandler::extGlGetBufferParameteriv(GLenum target, GLenum pname, GLint *params)
2267{ 2267{
2268#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2268#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2269 if (pGlGetBufferParameterivARB) 2269 if (pGlGetBufferParameterivARB)
2270 pGlGetBufferParameterivARB(target, pname, params); 2270 pGlGetBufferParameterivARB(target, pname, params);
2271#elif defined(GL_ARB_vertex_buffer_object) 2271#elif defined(GL_ARB_vertex_buffer_object)
2272 glGetBufferParameteriv(target, pname, params); 2272 glGetBufferParameteriv(target, pname, params);
2273#else 2273#else
2274 os::Printer::log("glGetBufferParameteriv not supported", ELL_ERROR); 2274 os::Printer::log("glGetBufferParameteriv not supported", ELL_ERROR);
2275#endif 2275#endif
2276} 2276}
2277 2277
2278inline void COpenGLExtensionHandler::extGlGetBufferPointerv(GLenum target, GLenum pname, GLvoid **params) 2278inline void COpenGLExtensionHandler::extGlGetBufferPointerv(GLenum target, GLenum pname, GLvoid **params)
2279{ 2279{
2280#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2280#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2281 if (pGlGetBufferPointervARB) 2281 if (pGlGetBufferPointervARB)
2282 pGlGetBufferPointervARB(target, pname, params); 2282 pGlGetBufferPointervARB(target, pname, params);
2283#elif defined(GL_ARB_vertex_buffer_object) 2283#elif defined(GL_ARB_vertex_buffer_object)
2284 glGetBufferPointerv(target, pname, params); 2284 glGetBufferPointerv(target, pname, params);
2285#else 2285#else
2286 os::Printer::log("glGetBufferPointerv not supported", ELL_ERROR); 2286 os::Printer::log("glGetBufferPointerv not supported", ELL_ERROR);
2287#endif 2287#endif
2288} 2288}
2289 2289
2290 2290
2291inline void COpenGLExtensionHandler::extGlProvokingVertex(GLenum mode) 2291inline void COpenGLExtensionHandler::extGlProvokingVertex(GLenum mode)
2292{ 2292{
2293#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2293#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2294 if (FeatureAvailable[IRR_ARB_provoking_vertex] && pGlProvokingVertexARB) 2294 if (FeatureAvailable[IRR_ARB_provoking_vertex] && pGlProvokingVertexARB)
2295 pGlProvokingVertexARB(mode); 2295 pGlProvokingVertexARB(mode);
2296 else if (FeatureAvailable[IRR_EXT_provoking_vertex] && pGlProvokingVertexEXT) 2296 else if (FeatureAvailable[IRR_EXT_provoking_vertex] && pGlProvokingVertexEXT)
2297 pGlProvokingVertexEXT(mode); 2297 pGlProvokingVertexEXT(mode);
2298#elif defined(GL_ARB_provoking_vertex) 2298#elif defined(GL_ARB_provoking_vertex)
2299 glProvokingVertex(mode); 2299 glProvokingVertex(mode);
2300#elif defined(GL_EXT_provoking_vertex) 2300#elif defined(GL_EXT_provoking_vertex)
2301 glProvokingVertexEXT(mode); 2301 glProvokingVertexEXT(mode);
2302#else 2302#else
2303 os::Printer::log("glProvokingVertex not supported", ELL_ERROR); 2303 os::Printer::log("glProvokingVertex not supported", ELL_ERROR);
2304#endif 2304#endif
2305} 2305}
2306 2306
2307 2307
2308inline void COpenGLExtensionHandler::extGlColorMaskIndexed(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a) 2308inline void COpenGLExtensionHandler::extGlColorMaskIndexed(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
2309{ 2309{
2310#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2310#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2311 if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlColorMaskIndexedEXT) 2311 if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlColorMaskIndexedEXT)
2312 pGlColorMaskIndexedEXT(buf, r, g, b, a); 2312 pGlColorMaskIndexedEXT(buf, r, g, b, a);
2313#elif defined(GL_EXT_draw_buffers2) 2313#elif defined(GL_EXT_draw_buffers2)
2314 glColorMaskIndexedEXT(buf, r, g, b, a); 2314 glColorMaskIndexedEXT(buf, r, g, b, a);
2315#else 2315#else
2316 os::Printer::log("glColorMaskIndexed not supported", ELL_ERROR); 2316 os::Printer::log("glColorMaskIndexed not supported", ELL_ERROR);
2317#endif 2317#endif
2318} 2318}
2319 2319
2320 2320
2321inline void COpenGLExtensionHandler::extGlEnableIndexed(GLenum target, GLuint index) 2321inline void COpenGLExtensionHandler::extGlEnableIndexed(GLenum target, GLuint index)
2322{ 2322{
2323#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2323#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2324 if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlEnableIndexedEXT) 2324 if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlEnableIndexedEXT)
2325 pGlEnableIndexedEXT(target, index); 2325 pGlEnableIndexedEXT(target, index);
2326#elif defined(GL_EXT_draw_buffers2) 2326#elif defined(GL_EXT_draw_buffers2)
2327 glEnableIndexedEXT(target, index); 2327 glEnableIndexedEXT(target, index);
2328#else 2328#else
2329 os::Printer::log("glEnableIndexed not supported", ELL_ERROR); 2329 os::Printer::log("glEnableIndexed not supported", ELL_ERROR);
2330#endif 2330#endif
2331} 2331}
2332 2332
2333inline void COpenGLExtensionHandler::extGlDisableIndexed(GLenum target, GLuint index) 2333inline void COpenGLExtensionHandler::extGlDisableIndexed(GLenum target, GLuint index)
2334{ 2334{
2335#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2335#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2336 if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlDisableIndexedEXT) 2336 if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlDisableIndexedEXT)
2337 pGlDisableIndexedEXT(target, index); 2337 pGlDisableIndexedEXT(target, index);
2338#elif defined(GL_EXT_draw_buffers2) 2338#elif defined(GL_EXT_draw_buffers2)
2339 glDisableIndexedEXT(target, index); 2339 glDisableIndexedEXT(target, index);
2340#else 2340#else
2341 os::Printer::log("glDisableIndexed not supported", ELL_ERROR); 2341 os::Printer::log("glDisableIndexed not supported", ELL_ERROR);
2342#endif 2342#endif
2343} 2343}
2344 2344
2345inline void COpenGLExtensionHandler::extGlBlendFuncIndexed(GLuint buf, GLenum src, GLenum dst) 2345inline void COpenGLExtensionHandler::extGlBlendFuncIndexed(GLuint buf, GLenum src, GLenum dst)
2346{ 2346{
2347#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2347#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2348 if (FeatureAvailable[IRR_ARB_draw_buffers_blend] && pGlBlendFunciARB) 2348 if (FeatureAvailable[IRR_ARB_draw_buffers_blend] && pGlBlendFunciARB)
2349 pGlBlendFunciARB(buf, src, dst); 2349 pGlBlendFunciARB(buf, src, dst);
2350 else if (FeatureAvailable[IRR_AMD_draw_buffers_blend] && pGlBlendFuncIndexedAMD) 2350 else if (FeatureAvailable[IRR_AMD_draw_buffers_blend] && pGlBlendFuncIndexedAMD)
2351 pGlBlendFuncIndexedAMD(buf, src, dst); 2351 pGlBlendFuncIndexedAMD(buf, src, dst);
2352#elif defined(GL_ARB_draw_buffers_blend) 2352#elif defined(GL_ARB_draw_buffers_blend)
2353 glBlendFunciARB(buf, src, dst); 2353 glBlendFunciARB(buf, src, dst);
2354#elif defined(GL_AMD_draw_buffers_blend) 2354#elif defined(GL_AMD_draw_buffers_blend)
2355 glBlendFuncIndexedAMD(buf, src, dst); 2355 glBlendFuncIndexedAMD(buf, src, dst);
2356#else 2356#else
2357 os::Printer::log("glBlendFuncIndexed not supported", ELL_ERROR); 2357 os::Printer::log("glBlendFuncIndexed not supported", ELL_ERROR);
2358#endif 2358#endif
2359} 2359}
2360 2360
2361inline void COpenGLExtensionHandler::extGlBlendEquationIndexed(GLuint buf, GLenum mode) 2361inline void COpenGLExtensionHandler::extGlBlendEquationIndexed(GLuint buf, GLenum mode)
2362{ 2362{
2363#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2363#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2364 if (FeatureAvailable[IRR_ARB_draw_buffers_blend] && pGlBlendEquationiARB) 2364 if (FeatureAvailable[IRR_ARB_draw_buffers_blend] && pGlBlendEquationiARB)
2365 pGlBlendEquationiARB(buf, mode); 2365 pGlBlendEquationiARB(buf, mode);
2366 else if (FeatureAvailable[IRR_AMD_draw_buffers_blend] && pGlBlendEquationIndexedAMD) 2366 else if (FeatureAvailable[IRR_AMD_draw_buffers_blend] && pGlBlendEquationIndexedAMD)
2367 pGlBlendEquationIndexedAMD(buf, mode); 2367 pGlBlendEquationIndexedAMD(buf, mode);
2368#elif defined(GL_ARB_draw_buffers_blend) 2368#elif defined(GL_ARB_draw_buffers_blend)
2369 glBlendEquationiARB(buf, mode); 2369 glBlendEquationiARB(buf, mode);
2370#elif defined(GL_AMD_draw_buffers_blend) 2370#elif defined(GL_AMD_draw_buffers_blend)
2371 glBlendEquationIndexedAMD(buf, mode); 2371 glBlendEquationIndexedAMD(buf, mode);
2372#else 2372#else
2373 os::Printer::log("glBlendEquationIndexed not supported", ELL_ERROR); 2373 os::Printer::log("glBlendEquationIndexed not supported", ELL_ERROR);
2374#endif 2374#endif
2375} 2375}
2376 2376
2377inline void COpenGLExtensionHandler::extGlProgramParameteri(GLhandleARB program, GLenum pname, GLint value) 2377inline void COpenGLExtensionHandler::extGlProgramParameteri(GLhandleARB program, GLenum pname, GLint value)
2378{ 2378{
2379#if defined(_IRR_OPENGL_USE_EXTPOINTER_) 2379#if defined(_IRR_OPENGL_USE_EXTPOINTER_)
2380 if (queryFeature(EVDF_GEOMETRY_SHADER)) 2380 if (queryFeature(EVDF_GEOMETRY_SHADER))
2381 { 2381 {
2382 if (pGlProgramParameteriARB) 2382 if (pGlProgramParameteriARB)
2383 pGlProgramParameteriARB(program, pname, value); 2383 pGlProgramParameteriARB(program, pname, value);
2384 else if (pGlProgramParameteriEXT) 2384 else if (pGlProgramParameteriEXT)
2385 pGlProgramParameteriEXT(program, pname, value); 2385 pGlProgramParameteriEXT(program, pname, value);
2386 } 2386 }
2387#elif defined(GL_ARB_geometry_shader4) 2387#elif defined(GL_ARB_geometry_shader4)
2388 glProgramParameteriARB(program, pname, value); 2388 glProgramParameteriARB(program, pname, value);
2389#elif defined(GL_EXT_geometry_shader4) 2389#elif defined(GL_EXT_geometry_shader4)
2390 glProgramParameteriEXT((long GLuint)program, pname, value); 2390 glProgramParameteriEXT((long GLuint)program, pname, value);
2391#elif defined(GL_NV_geometry_program4) || defined(GL_NV_geometry_shader4) 2391#elif defined(GL_NV_geometry_program4) || defined(GL_NV_geometry_shader4)
2392 glProgramParameteriNV(program, pname, value); 2392 glProgramParameteriNV(program, pname, value);
2393#else 2393#else
2394 os::Printer::log("glProgramParameteri not supported", ELL_ERROR); 2394 os::Printer::log("glProgramParameteri not supported", ELL_ERROR);
2395#endif 2395#endif
2396} 2396}
2397 2397
2398inline void COpenGLExtensionHandler::extGlGenQueries(GLsizei n, GLuint *ids) 2398inline void COpenGLExtensionHandler::extGlGenQueries(GLsizei n, GLuint *ids)
2399{ 2399{
2400#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2400#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2401 if (pGlGenQueriesARB) 2401 if (pGlGenQueriesARB)
2402 pGlGenQueriesARB(n, ids); 2402 pGlGenQueriesARB(n, ids);
2403 else if (pGlGenOcclusionQueriesNV) 2403 else if (pGlGenOcclusionQueriesNV)
2404 pGlGenOcclusionQueriesNV(n, ids); 2404 pGlGenOcclusionQueriesNV(n, ids);
2405#elif defined(GL_ARB_occlusion_query) 2405#elif defined(GL_ARB_occlusion_query)
2406 glGenQueriesARB(n, ids); 2406 glGenQueriesARB(n, ids);
2407#elif defined(GL_NV_occlusion_query) 2407#elif defined(GL_NV_occlusion_query)
2408 glGenOcclusionQueriesNV(n, ids); 2408 glGenOcclusionQueriesNV(n, ids);
2409#else 2409#else
2410 os::Printer::log("glGenQueries not supported", ELL_ERROR); 2410 os::Printer::log("glGenQueries not supported", ELL_ERROR);
2411#endif 2411#endif
2412} 2412}
2413 2413
2414inline void COpenGLExtensionHandler::extGlDeleteQueries(GLsizei n, const GLuint *ids) 2414inline void COpenGLExtensionHandler::extGlDeleteQueries(GLsizei n, const GLuint *ids)
2415{ 2415{
2416#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2416#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2417 if (pGlDeleteQueriesARB) 2417 if (pGlDeleteQueriesARB)
2418 pGlDeleteQueriesARB(n, ids); 2418 pGlDeleteQueriesARB(n, ids);
2419 else if (pGlDeleteOcclusionQueriesNV) 2419 else if (pGlDeleteOcclusionQueriesNV)
2420 pGlDeleteOcclusionQueriesNV(n, ids); 2420 pGlDeleteOcclusionQueriesNV(n, ids);
2421#elif defined(GL_ARB_occlusion_query) 2421#elif defined(GL_ARB_occlusion_query)
2422 glDeleteQueriesARB(n, ids); 2422 glDeleteQueriesARB(n, ids);
2423#elif defined(GL_NV_occlusion_query) 2423#elif defined(GL_NV_occlusion_query)
2424 glDeleteOcclusionQueriesNV(n, ids); 2424 glDeleteOcclusionQueriesNV(n, ids);
2425#else 2425#else
2426 os::Printer::log("glDeleteQueries not supported", ELL_ERROR); 2426 os::Printer::log("glDeleteQueries not supported", ELL_ERROR);
2427#endif 2427#endif
2428} 2428}
2429 2429
2430inline GLboolean COpenGLExtensionHandler::extGlIsQuery(GLuint id) 2430inline GLboolean COpenGLExtensionHandler::extGlIsQuery(GLuint id)
2431{ 2431{
2432#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2432#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2433 if (pGlIsQueryARB) 2433 if (pGlIsQueryARB)
2434 return pGlIsQueryARB(id); 2434 return pGlIsQueryARB(id);
2435 else if (pGlIsOcclusionQueryNV) 2435 else if (pGlIsOcclusionQueryNV)
2436 return pGlIsOcclusionQueryNV(id); 2436 return pGlIsOcclusionQueryNV(id);
2437 return false; 2437 return false;
2438#elif defined(GL_ARB_occlusion_query) 2438#elif defined(GL_ARB_occlusion_query)
2439 return glIsQueryARB(id); 2439 return glIsQueryARB(id);
2440#elif defined(GL_NV_occlusion_query) 2440#elif defined(GL_NV_occlusion_query)
2441 return glIsOcclusionQueryNV(id); 2441 return glIsOcclusionQueryNV(id);
2442#else 2442#else
2443 return false; 2443 return false;
2444#endif 2444#endif
2445} 2445}
2446 2446
2447inline void COpenGLExtensionHandler::extGlBeginQuery(GLenum target, GLuint id) 2447inline void COpenGLExtensionHandler::extGlBeginQuery(GLenum target, GLuint id)
2448{ 2448{
2449#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2449#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2450 if (pGlBeginQueryARB) 2450 if (pGlBeginQueryARB)
2451 pGlBeginQueryARB(target, id); 2451 pGlBeginQueryARB(target, id);
2452 else if (pGlBeginOcclusionQueryNV) 2452 else if (pGlBeginOcclusionQueryNV)
2453 pGlBeginOcclusionQueryNV(id); 2453 pGlBeginOcclusionQueryNV(id);
2454#elif defined(GL_ARB_occlusion_query) 2454#elif defined(GL_ARB_occlusion_query)
2455 glBeginQueryARB(target, id); 2455 glBeginQueryARB(target, id);
2456#elif defined(GL_NV_occlusion_query) 2456#elif defined(GL_NV_occlusion_query)
2457 glBeginOcclusionQueryNV(id); 2457 glBeginOcclusionQueryNV(id);
2458#else 2458#else
2459 os::Printer::log("glBeginQuery not supported", ELL_ERROR); 2459 os::Printer::log("glBeginQuery not supported", ELL_ERROR);
2460#endif 2460#endif
2461} 2461}
2462 2462
2463inline void COpenGLExtensionHandler::extGlEndQuery(GLenum target) 2463inline void COpenGLExtensionHandler::extGlEndQuery(GLenum target)
2464{ 2464{
2465#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2465#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2466 if (pGlEndQueryARB) 2466 if (pGlEndQueryARB)
2467 pGlEndQueryARB(target); 2467 pGlEndQueryARB(target);
2468 else if (pGlEndOcclusionQueryNV) 2468 else if (pGlEndOcclusionQueryNV)
2469 pGlEndOcclusionQueryNV(); 2469 pGlEndOcclusionQueryNV();
2470#elif defined(GL_ARB_occlusion_query) 2470#elif defined(GL_ARB_occlusion_query)
2471 glEndQueryARB(target); 2471 glEndQueryARB(target);
2472#elif defined(GL_NV_occlusion_query) 2472#elif defined(GL_NV_occlusion_query)
2473 glEndOcclusionQueryNV(); 2473 glEndOcclusionQueryNV();
2474#else 2474#else
2475 os::Printer::log("glEndQuery not supported", ELL_ERROR); 2475 os::Printer::log("glEndQuery not supported", ELL_ERROR);
2476#endif 2476#endif
2477} 2477}
2478 2478
2479inline void COpenGLExtensionHandler::extGlGetQueryiv(GLenum target, GLenum pname, GLint *params) 2479inline void COpenGLExtensionHandler::extGlGetQueryiv(GLenum target, GLenum pname, GLint *params)
2480{ 2480{
2481#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2481#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2482 if (pGlGetQueryivARB) 2482 if (pGlGetQueryivARB)
2483 pGlGetQueryivARB(target, pname, params); 2483 pGlGetQueryivARB(target, pname, params);
2484#elif defined(GL_ARB_occlusion_query) 2484#elif defined(GL_ARB_occlusion_query)
2485 glGetQueryivARB(target, pname, params); 2485 glGetQueryivARB(target, pname, params);
2486#else 2486#else
2487 os::Printer::log("glGetQueryivARB not supported", ELL_ERROR); 2487 os::Printer::log("glGetQueryivARB not supported", ELL_ERROR);
2488#endif 2488#endif
2489} 2489}
2490 2490
2491inline void COpenGLExtensionHandler::extGlGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) 2491inline void COpenGLExtensionHandler::extGlGetQueryObjectiv(GLuint id, GLenum pname, GLint *params)
2492{ 2492{
2493#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2493#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2494 if (pGlGetQueryObjectivARB) 2494 if (pGlGetQueryObjectivARB)
2495 pGlGetQueryObjectivARB(id, pname, params); 2495 pGlGetQueryObjectivARB(id, pname, params);
2496 else if (pGlGetOcclusionQueryivNV) 2496 else if (pGlGetOcclusionQueryivNV)
2497 pGlGetOcclusionQueryivNV(id, pname, params); 2497 pGlGetOcclusionQueryivNV(id, pname, params);
2498#elif defined(GL_ARB_occlusion_query) 2498#elif defined(GL_ARB_occlusion_query)
2499 glGetQueryObjectivARB(id, pname, params); 2499 glGetQueryObjectivARB(id, pname, params);
2500#elif defined(GL_NV_occlusion_query) 2500#elif defined(GL_NV_occlusion_query)
2501 glGetOcclusionQueryivNV(id, pname, params); 2501 glGetOcclusionQueryivNV(id, pname, params);
2502#else 2502#else
2503 os::Printer::log("glGetQueryObjectiv not supported", ELL_ERROR); 2503 os::Printer::log("glGetQueryObjectiv not supported", ELL_ERROR);
2504#endif 2504#endif
2505} 2505}
2506 2506
2507inline void COpenGLExtensionHandler::extGlGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) 2507inline void COpenGLExtensionHandler::extGlGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)
2508{ 2508{
2509#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2509#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2510 if (pGlGetQueryObjectuivARB) 2510 if (pGlGetQueryObjectuivARB)
2511 pGlGetQueryObjectuivARB(id, pname, params); 2511 pGlGetQueryObjectuivARB(id, pname, params);
2512 else if (pGlGetOcclusionQueryuivNV) 2512 else if (pGlGetOcclusionQueryuivNV)
2513 pGlGetOcclusionQueryuivNV(id, pname, params); 2513 pGlGetOcclusionQueryuivNV(id, pname, params);
2514#elif defined(GL_ARB_occlusion_query) 2514#elif defined(GL_ARB_occlusion_query)
2515 glGetQueryObjectuivARB(id, pname, params); 2515 glGetQueryObjectuivARB(id, pname, params);
2516#elif defined(GL_NV_occlusion_query) 2516#elif defined(GL_NV_occlusion_query)
2517 glGetOcclusionQueryuivNV(id, pname, params); 2517 glGetOcclusionQueryuivNV(id, pname, params);
2518#else 2518#else
2519 os::Printer::log("glGetQueryObjectuiv not supported", ELL_ERROR); 2519 os::Printer::log("glGetQueryObjectuiv not supported", ELL_ERROR);
2520#endif 2520#endif
2521} 2521}
2522 2522
2523inline void COpenGLExtensionHandler::extGlSwapInterval(int interval) 2523inline void COpenGLExtensionHandler::extGlSwapInterval(int interval)
2524{ 2524{
2525 // we have wglext, so try to use that 2525 // we have wglext, so try to use that
2526#if defined(_IRR_WINDOWS_API_) && defined(_IRR_COMPILE_WITH_WINDOWS_DEVICE_) 2526#if defined(_IRR_WINDOWS_API_) && defined(_IRR_COMPILE_WITH_WINDOWS_DEVICE_)
2527#ifdef WGL_EXT_swap_control 2527#ifdef WGL_EXT_swap_control
2528 if (pWglSwapIntervalEXT) 2528 if (pWglSwapIntervalEXT)
2529 pWglSwapIntervalEXT(interval); 2529 pWglSwapIntervalEXT(interval);
2530#endif 2530#endif
2531#endif 2531#endif
2532#ifdef _IRR_COMPILE_WITH_X11_DEVICE_ 2532#ifdef _IRR_COMPILE_WITH_X11_DEVICE_
2533 //TODO: Check GLX_EXT_swap_control and GLX_MESA_swap_control 2533 //TODO: Check GLX_EXT_swap_control and GLX_MESA_swap_control
2534#ifdef GLX_SGI_swap_control 2534#ifdef GLX_SGI_swap_control
2535 // does not work with interval==0 2535 // does not work with interval==0
2536#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2536#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2537 if (interval && pGlxSwapIntervalSGI) 2537 if (interval && pGlxSwapIntervalSGI)
2538 pGlxSwapIntervalSGI(interval); 2538 pGlxSwapIntervalSGI(interval);
2539#else 2539#else
2540 if (interval) 2540 if (interval)
2541 glXSwapIntervalSGI(interval); 2541 glXSwapIntervalSGI(interval);
2542#endif 2542#endif
2543#elif defined(GLX_EXT_swap_control) 2543#elif defined(GLX_EXT_swap_control)
2544#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2544#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2545 Display *dpy = glXGetCurrentDisplay(); 2545 Display *dpy = glXGetCurrentDisplay();
2546 GLXDrawable drawable = glXGetCurrentDrawable(); 2546 GLXDrawable drawable = glXGetCurrentDrawable();
2547 2547
2548 if (pGlxSwapIntervalEXT) 2548 if (pGlxSwapIntervalEXT)
2549 pGlxSwapIntervalEXT(dpy, drawable, interval); 2549 pGlxSwapIntervalEXT(dpy, drawable, interval);
2550#else 2550#else
2551 pGlXSwapIntervalEXT(dpy, drawable, interval); 2551 pGlXSwapIntervalEXT(dpy, drawable, interval);
2552#endif 2552#endif
2553#elif defined(GLX_MESA_swap_control) 2553#elif defined(GLX_MESA_swap_control)
2554#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2554#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2555 if (pGlxSwapIntervalMESA) 2555 if (pGlxSwapIntervalMESA)
2556 pGlxSwapIntervalMESA(interval); 2556 pGlxSwapIntervalMESA(interval);
2557#else 2557#else
2558 pGlXSwapIntervalMESA(interval); 2558 pGlXSwapIntervalMESA(interval);
2559#endif 2559#endif
2560#endif 2560#endif
2561#endif 2561#endif
2562} 2562}
2563 2563
2564inline void COpenGLExtensionHandler::extGlBlendEquation(GLenum mode) 2564inline void COpenGLExtensionHandler::extGlBlendEquation(GLenum mode)
2565{ 2565{
2566#ifdef _IRR_OPENGL_USE_EXTPOINTER_ 2566#ifdef _IRR_OPENGL_USE_EXTPOINTER_
2567 if (pGlBlendEquation) 2567 if (pGlBlendEquation)
2568 pGlBlendEquation(mode); 2568 pGlBlendEquation(mode);
2569 else if (pGlBlendEquationEXT) 2569 else if (pGlBlendEquationEXT)
2570 pGlBlendEquationEXT(mode); 2570 pGlBlendEquationEXT(mode);
2571#elif defined(GL_EXT_blend_minmax) || defined(GL_EXT_blend_subtract) || defined(GL_EXT_blend_logic_op) 2571#elif defined(GL_EXT_blend_minmax) || defined(GL_EXT_blend_subtract) || defined(GL_EXT_blend_logic_op)
2572 glBlendEquationEXT(mode); 2572 glBlendEquationEXT(mode);
2573#elif defined(GL_VERSION_1_2) 2573#elif defined(GL_VERSION_1_2)
2574 glBlendEquation(mode); 2574 glBlendEquation(mode);
2575#else 2575#else
2576 os::Printer::log("glBlendEquation not supported", ELL_ERROR); 2576 os::Printer::log("glBlendEquation not supported", ELL_ERROR);
2577#endif 2577#endif
2578} 2578}
2579 2579
2580 2580
2581} 2581}
2582} 2582}
2583 2583
2584#endif 2584#endif
2585 2585
2586#endif 2586#endif
2587 2587