This patch spawns from this game engine issue:
[blender-staging.git] / source / gameengine / Rasterizer / RAS_OpenGLRasterizer / RAS_GLExtensionManager.h
1 /**
2  * $Id$
3  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version. The Blender
9  * Foundation also sells licenses for use in proprietary software under
10  * the Blender License.  See http://www.blender.org/BL/ for information
11  * about this.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): none yet.
28  *
29  * ***** END GPL/BL DUAL LICENSE BLOCK *****
30  */
31
32 #ifndef __RAS_GLEXTENSIONMANAGER_H__
33 #define __RAS_GLEXTENSIONMANAGER_H__
34
35
36 #ifdef WIN32
37 #  include <windows.h>
38 #  include <GL/gl.h>
39
40 #elif defined(__APPLE__)
41 #  define __glext_h_
42 #  define GL_GLEXT_LEGACY 1
43 #  include <OpenGL/gl.h>
44 #  include <OpenGL/glu.h>
45
46 #else /* UNIX */
47 #  define __glext_h_
48 #  include <GL/gl.h>
49 #  include <GL/glx.h>
50 #  undef GL_ARB_multitexture // (ubuntu)
51 #  undef __glext_h_
52 #endif
53
54 #ifdef WITH_GLEXT
55 #ifdef WIN32
56 #  include <GL/glext.h>
57 #elif defined(__APPLE__)
58 #  include <OpenGL/glext.h>
59 #  undef __glext_h_
60 # else
61 #  include <GL/glext.h>
62 # endif
63 #endif
64
65 #ifdef __sgi
66 #  undef GL_ARB_vertex_program
67 #endif
68
69 #include "EXT_separate_specular_color.h"
70 #include "ARB_multitexture.h"
71 namespace bgl
72 {
73         /**
74          *  This is a list of all registered OpenGL extensions.
75          *  It is available from:
76          *  http://oss.sgi.com/projects/ogl-sample/registry/ 
77          */
78         typedef enum {
79                 /* ARB Extensions */
80                 _GL_ARB_imaging,
81                 _GL_ARB_multitexture ,
82                 _GLX_ARB_get_proc_address ,
83                 _GL_ARB_transpose_matrix ,
84                 _WGL_ARB_buffer_region ,
85                 _GL_ARB_multisample ,
86                 _GL_ARB_texture_env_add ,
87                 _GL_ARB_texture_cube_map ,
88                 _WGL_ARB_extensions_string ,
89                 _WGL_ARB_pixel_format ,
90                 _WGL_ARB_make_current_read ,
91                 _WGL_ARB_pbuffer ,
92                 _GL_ARB_texture_compression ,
93                 _GL_ARB_texture_border_clamp ,
94                 _GL_ARB_point_parameters ,
95                 _GL_ARB_vertex_blend ,
96                 _GL_ARB_matrix_palette ,
97                 _GL_ARB_texture_env_combine ,
98                 _GL_ARB_texture_env_crossbar ,
99                 _GL_ARB_texture_env_dot3 ,
100                 _WGL_ARB_render_texture ,
101                 _GL_ARB_texture_mirrored_repeat ,
102                 _GL_ARB_depth_texture ,
103                 _GL_ARB_shadow ,
104                 _GL_ARB_shadow_ambient ,
105                 _GL_ARB_window_pos ,
106                 _GL_ARB_vertex_program ,
107                 _GL_ARB_fragment_program ,
108                 _GL_ARB_vertex_buffer_object ,
109                 _GL_ARB_occlusion_query ,
110                 _GL_ARB_shader_objects ,
111                 _GL_ARB_vertex_shader ,
112                 _GL_ARB_fragment_shader ,
113                 _GL_ARB_shading_language_100 ,
114                 _GL_ARB_texture_non_power_of_two ,
115                 _GL_ARB_point_sprite ,
116                 _GL_ARB_fragment_program_shadow ,
117                 
118                 /* Non ARB Extensions */
119                 _GL_EXT_abgr ,
120                 _GL_EXT_blend_color ,
121                 _GL_EXT_polygon_offset ,
122                 _GL_EXT_texture ,
123                 _GL_EXT_texture3D ,
124                 _GL_SGIS_texture_filter4 ,
125                 _GL_EXT_subtexture ,
126                 _GL_EXT_copy_texture ,
127                 _GL_EXT_histogram ,
128                 _GL_EXT_convolution ,
129                 _GL_SGI_color_matrix ,
130                 _GL_SGI_color_table ,
131                 _GL_SGIS_pixel_texture ,
132                 _GL_SGIS_texture4D ,
133                 _GL_SGI_texture_color_table ,
134                 _GL_EXT_cmyka ,
135                 _GL_EXT_texture_object ,
136                 _GL_SGIS_detail_texture ,
137                 _GL_SGIS_sharpen_texture ,
138                 _GL_EXT_packed_pixels ,
139                 _GL_SGIS_texture_lod ,
140                 _GL_SGIS_multisample ,
141                 _GL_EXT_rescale_normal ,
142                 _GLX_EXT_visual_info ,
143                 _GL_EXT_vertex_array ,
144                 _GL_EXT_misc_attribute ,
145                 _GL_SGIS_generate_mipmap ,
146                 _GL_SGIX_clipmap ,
147                 _GL_SGIX_shadow ,
148                 _GL_SGIS_texture_edge_clamp ,
149                 _GL_SGIS_texture_border_clamp ,
150                 _GL_EXT_blend_minmax ,
151                 _GL_EXT_blend_subtract ,
152                 _GL_EXT_blend_logic_op ,
153                 _GLX_SGI_swap_control ,
154                 _GLX_SGI_video_sync ,
155                 _GLX_SGI_make_current_read ,
156                 _GLX_SGIX_video_source ,
157                 _GLX_EXT_visual_rating ,
158                 _GL_SGIX_interlace ,
159                 _GLX_EXT_import_context ,
160                 _GLX_SGIX_fbconfig ,
161                 _GLX_SGIX_pbuffer ,
162                 _GL_SGIS_texture_select ,
163                 _GL_SGIX_sprite ,
164                 _GL_SGIX_texture_multi_buffer ,
165                 _GL_EXT_point_parameters ,
166                 _GL_SGIX_instruments ,
167                 _GL_SGIX_texture_scale_bias ,
168                 _GL_SGIX_framezoom ,
169                 _GL_SGIX_tag_sample_buffer ,
170                 _GL_SGIX_reference_plane ,
171                 _GL_SGIX_flush_raster ,
172                 _GLX_SGI_cushion ,
173                 _GL_SGIX_depth_texture ,
174                 _GL_SGIS_fog_function ,
175                 _GL_SGIX_fog_offset ,
176                 _GL_HP_image_transform ,
177                 _GL_HP_convolution_border_modes ,
178                 _GL_SGIX_texture_add_env ,
179                 _GL_EXT_color_subtable ,
180                 _GLU_EXT_object_space_tess ,
181                 _GL_PGI_vertex_hints ,
182                 _GL_PGI_misc_hints ,
183                 _GL_EXT_paletted_texture ,
184                 _GL_EXT_clip_volume_hint ,
185                 _GL_SGIX_list_priority ,
186                 _GL_SGIX_ir_instrument1 ,
187                 _GLX_SGIX_video_resize ,
188                 _GL_SGIX_texture_lod_bias ,
189                 _GLU_SGI_filter4_parameters ,
190                 _GLX_SGIX_dm_buffer ,
191                 _GL_SGIX_shadow_ambient ,
192                 _GLX_SGIX_swap_group ,
193                 _GLX_SGIX_swap_barrier ,
194                 _GL_EXT_index_texture ,
195                 _GL_EXT_index_material ,
196                 _GL_EXT_index_func ,
197                 _GL_EXT_index_array_formats ,
198                 _GL_EXT_compiled_vertex_array ,
199                 _GL_EXT_cull_vertex ,
200                 _GLU_EXT_nurbs_tessellator ,
201                 _GL_SGIX_ycrcb ,
202                 _GL_EXT_fragment_lighting ,
203                 _GL_IBM_rasterpos_clip ,
204                 _GL_HP_texture_lighting ,
205                 _GL_EXT_draw_range_elements ,
206                 _GL_WIN_phong_shading ,
207                 _GL_WIN_specular_fog ,
208                 _GLX_SGIS_color_range ,
209                 _GL_EXT_light_texture ,
210                 _GL_SGIX_blend_alpha_minmax ,
211                 _GL_EXT_scene_marker ,
212                 _GL_SGIX_pixel_texture_bits ,
213                 _GL_EXT_bgra ,
214                 _GL_SGIX_async ,
215                 _GL_SGIX_async_pixel ,
216                 _GL_SGIX_async_histogram ,
217                 _GL_INTEL_texture_scissor ,
218                 _GL_INTEL_parallel_arrays ,
219                 _GL_HP_occlusion_test ,
220                 _GL_EXT_pixel_transform ,
221                 _GL_EXT_pixel_transform_color_table ,
222                 _GL_EXT_shared_texture_palette ,
223                 _GLX_SGIS_blended_overlay ,
224                 _GL_EXT_separate_specular_color ,
225                 _GL_EXT_secondary_color ,
226                 _GL_EXT_texture_env ,
227                 _GL_EXT_texture_perturb_normal ,
228                 _GL_EXT_multi_draw_arrays ,
229                 _GL_EXT_fog_coord ,
230                 _GL_REND_screen_coordinates ,
231                 _GL_EXT_coordinate_frame ,
232                 _GL_EXT_texture_env_combine ,
233                 _GL_APPLE_specular_vector ,
234                 _GL_SGIX_pixel_texture ,
235                 _GL_APPLE_transform_hint ,
236                 _GL_SUNX_constant_data ,
237                 _GL_SUN_global_alpha ,
238                 _GL_SUN_triangle_list ,
239                 _GL_SUN_vertex ,
240                 _WGL_EXT_display_color_table ,
241                 _WGL_EXT_extensions_string ,
242                 _WGL_EXT_make_current_read ,
243                 _WGL_EXT_pixel_format ,
244                 _WGL_EXT_pbuffer ,
245                 _WGL_EXT_swap_control ,
246                 _GL_EXT_blend_func_separate ,
247                 _GL_INGR_color_clamp ,
248                 _GL_INGR_interlace_read ,
249                 _GL_EXT_stencil_wrap ,
250                 _WGL_EXT_depth_float ,
251                 _GL_EXT_422_pixels ,
252                 _GL_NV_texgen_reflection ,
253                 _GL_SGIX_texture_range ,
254                 _GL_SUN_convolution_border_modes ,
255                 _GLX_SUN_get_transparent_index ,
256                 _GL_EXT_texture_env_add ,
257                 _GL_EXT_texture_lod_bias ,
258                 _GL_EXT_texture_filter_anisotropic ,
259                 _GL_EXT_vertex_weighting ,
260                 _GL_NV_light_max_exponent ,
261                 _GL_NV_vertex_array_range ,
262                 _GL_NV_register_combiners ,
263                 _GL_NV_fog_distance ,
264                 _GL_NV_texgen_emboss ,
265                 _GL_NV_blend_square ,
266                 _GL_NV_texture_env_combine4 ,
267                 _GL_MESA_resize_buffers ,
268                 _GL_MESA_window_pos ,
269                 _GL_EXT_texture_compression_s3tc ,
270                 _GL_IBM_cull_vertex ,
271                 _GL_IBM_multimode_draw_arrays ,
272                 _GL_IBM_vertex_array_lists ,
273                 _GL_3DFX_texture_compression_FXT1 ,
274                 _GL_3DFX_multisample ,
275                 _GL_3DFX_tbuffer ,
276                 _WGL_EXT_multisample ,
277                 _GL_SGIX_vertex_preclip ,
278                 _GL_SGIX_resample ,
279                 _GL_SGIS_texture_color_mask ,
280                 _GLX_MESA_copy_sub_buffer ,
281                 _GLX_MESA_pixmap_colormap ,
282                 _GLX_MESA_release_buffers ,
283                 _GLX_MESA_set_3dfx_mode ,
284                 _GL_EXT_texture_env_dot3 ,
285                 _GL_ATI_texture_mirror_once ,
286                 _GL_NV_fence ,
287                 _GL_IBM_static_data ,
288                 _GL_IBM_texture_mirrored_repeat ,
289                 _GL_NV_evaluators ,
290                 _GL_NV_packed_depth_stencil ,
291                 _GL_NV_register_combiners2 ,
292                 _GL_NV_texture_compression_vtc ,
293                 _GL_NV_texture_rectangle ,
294                 _GL_NV_texture_shader ,
295                 _GL_NV_texture_shader2 ,
296                 _GL_NV_vertex_array_range2 ,
297                 _GL_NV_vertex_program ,
298                 _GLX_SGIX_visual_select_group ,
299                 _GL_SGIX_texture_coordinate_clamp ,
300                 _GLX_OML_swap_method ,
301                 _GLX_OML_sync_control ,
302                 _GL_OML_interlace ,
303                 _GL_OML_subsample ,
304                 _GL_OML_resample ,
305                 _WGL_OML_sync_control ,
306                 _GL_NV_copy_depth_to_color ,
307                 _GL_ATI_envmap_bumpmap ,
308                 _GL_ATI_fragment_shader ,
309                 _GL_ATI_pn_triangles ,
310                 _GL_ATI_vertex_array_object ,
311                 _GL_EXT_vertex_shader ,
312                 _GL_ATI_vertex_streams ,
313                 _WGL_I3D_digital_video_control ,
314                 _WGL_I3D_gamma ,
315                 _WGL_I3D_genlock ,
316                 _WGL_I3D_image_buffer ,
317                 _WGL_I3D_swap_frame_lock ,
318                 _WGL_I3D_swap_frame_usage ,
319                 _GL_ATI_element_array ,
320                 _GL_SUN_mesh_array ,
321                 _GL_SUN_slice_accum ,
322                 _GL_NV_multisample_filter_hint ,
323                 _GL_NV_depth_clamp ,
324                 _GL_NV_occlusion_query ,
325                 _GL_NV_point_sprite ,
326                 _WGL_NV_render_depth_texture ,
327                 _WGL_NV_render_texture_rectangle ,
328                 _GL_NV_texture_shader3 ,
329                 _GL_NV_vertex_program1_1 ,
330                 _GL_EXT_shadow_funcs ,
331                 _GL_EXT_stencil_two_side ,
332                 _GL_ATI_text_fragment_shader ,
333                 _GL_APPLE_client_storage ,
334                 _GL_APPLE_element_array ,
335                 _GL_APPLE_fence ,
336                 _GL_APPLE_vertex_array_object ,
337                 _GL_APPLE_vertex_array_range ,
338                 _GL_APPLE_ycbcr_422 ,
339                 _GL_S3_s3tc ,
340                 _GL_ATI_draw_buffers ,
341                 _WGL_ATI_pixel_format_float ,
342                 _GL_ATI_texture_env_combine3 ,
343                 _GL_ATI_texture_float ,
344                 _GL_NV_float_buffer ,
345                 _GL_NV_fragment_program ,
346                 _GL_NV_half_float ,
347                 _GL_NV_pixel_data_range ,
348                 _GL_NV_primitive_restart ,
349                 _GL_NV_texture_expand_normal ,
350                 _GL_NV_vertex_program2 ,
351                 _GL_ATI_map_object_buffer ,
352                 _GL_ATI_separate_stencil ,
353                 _GL_ATI_vertex_attrib_array_object ,
354                 _GL_OES_byte_coordinates ,
355                 _GL_OES_fixed_point ,
356                 _GL_OES_single_precision ,
357                 _GL_OES_compressed_paletted_texture ,
358                 _GL_OES_read_format ,
359                 _GL_OES_query_matrix ,
360                 _GL_EXT_depth_bounds_test ,
361                 _GL_EXT_texture_mirror_clamp ,
362                 _GL_EXT_blend_equation_separate ,
363                 _GL_MESA_pack_invert ,
364                 _GL_MESA_ycbcr_texture,
365                 
366                 /* Finished */
367                 _BGL_TEST,
368                 NUM_EXTENSIONS
369         } ExtensionName;
370         
371         /**
372          * Checks at runtime whether OpenGL supports the named extension.
373          * Returns true if OpenGL supports the given extension.
374          * 
375          * @param name  The extension name to check.
376          */
377         bool QueryExtension(ExtensionName name);
378         /**
379          * Checks the OpenGL version.
380          * Returns true if OpenGL is at least the given version.
381          *
382          * @param major The major version required
383          * @param minor The minor version required
384          */
385         bool QueryVersion(int major, int minor);
386         /**
387          * This will dynamically link all runtime supported extensions into
388          * the binary.
389          *
390          * @param debug Enable debug printing.  This will print debugging info
391          *   when extensions are loaded.
392          */
393         void InitExtensions(int debug);
394
395 #if defined(PFNGLPNTRIANGLESIATIPROC)
396 extern PFNGLPNTRIANGLESIATIPROC blPNTrianglesiATI;
397 extern PFNGLPNTRIANGLESFATIPROC blPNTrianglesfATI;
398 #endif
399
400
401 // quick runtime checks
402 typedef struct BL_EXTInfo
403 {
404         BL_EXTInfo():
405                 _ARB_multitexture(0),
406                 _ARB_texture_env_combine(0),
407                 _EXT_blend_color(0),
408                 _ARB_texture_cube_map(0),
409                 _ARB_shader_objects(0),
410                 _ARB_vertex_shader(0),
411                 _ARB_fragment_shader(0),
412                 _EXT_texture3D(0),
413                 _ARB_vertex_program(0),
414                 _ARB_depth_texture(0),
415                 _EXT_compiled_vertex_array(0)
416         {
417                 //
418         }
419         bool _ARB_multitexture;
420         bool _ARB_texture_env_combine;
421         bool _EXT_blend_color;
422         bool _ARB_texture_cube_map;
423         bool _ARB_shader_objects;
424         bool _ARB_vertex_shader;
425         bool _ARB_fragment_shader;
426         bool _EXT_texture3D;
427         bool _ARB_vertex_program;
428         bool _ARB_depth_texture;
429         bool _EXT_compiled_vertex_array;
430 }BL_EXTInfo;
431
432 extern BL_EXTInfo RAS_EXT_support;
433
434 #ifdef GL_ARB_multitexture // defined in glext.h now...
435 extern int max_texture_units;
436 extern PFNGLACTIVETEXTUREARBPROC blActiveTextureARB;
437 extern PFNGLCLIENTACTIVETEXTUREARBPROC blClientActiveTextureARB;
438 extern PFNGLMULTITEXCOORD1DARBPROC blMultiTexCoord1dARB;
439 extern PFNGLMULTITEXCOORD1DVARBPROC blMultiTexCoord1dvARB;
440 extern PFNGLMULTITEXCOORD1FARBPROC blMultiTexCoord1fARB;
441 extern PFNGLMULTITEXCOORD1FVARBPROC blMultiTexCoord1fvARB;
442 extern PFNGLMULTITEXCOORD1IARBPROC blMultiTexCoord1iARB;
443 extern PFNGLMULTITEXCOORD1IVARBPROC blMultiTexCoord1ivARB;
444 extern PFNGLMULTITEXCOORD1SARBPROC blMultiTexCoord1sARB;
445 extern PFNGLMULTITEXCOORD1SVARBPROC blMultiTexCoord1svARB;
446 extern PFNGLMULTITEXCOORD2DARBPROC blMultiTexCoord2dARB;
447 extern PFNGLMULTITEXCOORD2DVARBPROC blMultiTexCoord2dvARB;
448 extern PFNGLMULTITEXCOORD2FARBPROC blMultiTexCoord2fARB;
449 extern PFNGLMULTITEXCOORD2FVARBPROC blMultiTexCoord2fvARB;
450 extern PFNGLMULTITEXCOORD2IARBPROC blMultiTexCoord2iARB;
451 extern PFNGLMULTITEXCOORD2IVARBPROC blMultiTexCoord2ivARB;
452 extern PFNGLMULTITEXCOORD2SARBPROC blMultiTexCoord2sARB;
453 extern PFNGLMULTITEXCOORD2SVARBPROC blMultiTexCoord2svARB;
454 extern PFNGLMULTITEXCOORD3DARBPROC blMultiTexCoord3dARB;
455 extern PFNGLMULTITEXCOORD3DVARBPROC blMultiTexCoord3dvARB;
456 extern PFNGLMULTITEXCOORD3FARBPROC blMultiTexCoord3fARB;
457 extern PFNGLMULTITEXCOORD3FVARBPROC blMultiTexCoord3fvARB;
458 extern PFNGLMULTITEXCOORD3IARBPROC blMultiTexCoord3iARB;
459 extern PFNGLMULTITEXCOORD3IVARBPROC blMultiTexCoord3ivARB;
460 extern PFNGLMULTITEXCOORD3SARBPROC blMultiTexCoord3sARB;
461 extern PFNGLMULTITEXCOORD3SVARBPROC blMultiTexCoord3svARB;
462 extern PFNGLMULTITEXCOORD4DARBPROC blMultiTexCoord4dARB;
463 extern PFNGLMULTITEXCOORD4DVARBPROC blMultiTexCoord4dvARB;
464 extern PFNGLMULTITEXCOORD4FARBPROC blMultiTexCoord4fARB;
465 extern PFNGLMULTITEXCOORD4FVARBPROC blMultiTexCoord4fvARB;
466 extern PFNGLMULTITEXCOORD4IARBPROC blMultiTexCoord4iARB;
467 extern PFNGLMULTITEXCOORD4IVARBPROC blMultiTexCoord4ivARB;
468 extern PFNGLMULTITEXCOORD4SARBPROC blMultiTexCoord4sARB;
469 extern PFNGLMULTITEXCOORD4SVARBPROC blMultiTexCoord4svARB;
470 #endif
471
472
473 #ifdef GL_ARB_shader_objects
474 extern PFNGLDELETEOBJECTARBPROC blDeleteObjectARB;
475 extern PFNGLGETHANDLEARBPROC blGetHandleARB;
476 extern PFNGLDETACHOBJECTARBPROC blDetachObjectARB;
477 extern PFNGLCREATESHADEROBJECTARBPROC blCreateShaderObjectARB;
478 extern PFNGLSHADERSOURCEARBPROC blShaderSourceARB;
479 extern PFNGLCOMPILESHADERARBPROC blCompileShaderARB;
480 extern PFNGLCREATEPROGRAMOBJECTARBPROC blCreateProgramObjectARB;
481 extern PFNGLATTACHOBJECTARBPROC blAttachObjectARB;
482 extern PFNGLLINKPROGRAMARBPROC blLinkProgramARB;
483 extern PFNGLUSEPROGRAMOBJECTARBPROC blUseProgramObjectARB;
484 extern PFNGLVALIDATEPROGRAMARBPROC blValidateProgramARB;
485 extern PFNGLUNIFORM1FARBPROC blUniform1fARB;
486 extern PFNGLUNIFORM2FARBPROC blUniform2fARB;
487 extern PFNGLUNIFORM3FARBPROC blUniform3fARB;
488 extern PFNGLUNIFORM4FARBPROC blUniform4fARB;
489 extern PFNGLUNIFORM1IARBPROC blUniform1iARB;
490 extern PFNGLUNIFORM2IARBPROC blUniform2iARB;
491 extern PFNGLUNIFORM3IARBPROC blUniform3iARB;
492 extern PFNGLUNIFORM4IARBPROC blUniform4iARB;
493 extern PFNGLUNIFORM1FVARBPROC blUniform1fvARB;
494 extern PFNGLUNIFORM2FVARBPROC blUniform2fvARB;
495 extern PFNGLUNIFORM3FVARBPROC blUniform3fvARB;
496 extern PFNGLUNIFORM4FVARBPROC blUniform4fvARB;
497 extern PFNGLUNIFORM1IVARBPROC blUniform1ivARB;
498 extern PFNGLUNIFORM2IVARBPROC blUniform2ivARB;
499 extern PFNGLUNIFORM3IVARBPROC blUniform3ivARB;
500 extern PFNGLUNIFORM4IVARBPROC blUniform4ivARB;
501 extern PFNGLUNIFORMMATRIX2FVARBPROC blUniformMatrix2fvARB;
502 extern PFNGLUNIFORMMATRIX3FVARBPROC blUniformMatrix3fvARB;
503 extern PFNGLUNIFORMMATRIX4FVARBPROC blUniformMatrix4fvARB;
504 extern PFNGLGETOBJECTPARAMETERFVARBPROC blGetObjectParameterfvARB;
505 extern PFNGLGETOBJECTPARAMETERIVARBPROC blGetObjectParameterivARB;
506 extern PFNGLGETINFOLOGARBPROC blGetInfoLogARB;
507 extern PFNGLGETATTACHEDOBJECTSARBPROC blGetAttachedObjectsARB;
508 extern PFNGLGETUNIFORMLOCATIONARBPROC blGetUniformLocationARB;
509 extern PFNGLGETACTIVEUNIFORMARBPROC blGetActiveUniformARB;
510 extern PFNGLGETUNIFORMFVARBPROC blGetUniformfvARB;
511 extern PFNGLGETUNIFORMIVARBPROC blGetUniformivARB;
512 extern PFNGLGETSHADERSOURCEARBPROC blGetShaderSourceARB;
513 #endif
514
515 #ifdef GL_ARB_vertex_shader
516 extern PFNGLBINDATTRIBLOCATIONARBPROC blBindAttribLocationARB;
517 extern PFNGLGETACTIVEATTRIBARBPROC blGetActiveAttribARB;
518 extern PFNGLGETATTRIBLOCATIONARBPROC blGetAttribLocationARB;
519 #endif
520
521 #ifdef GL_ARB_vertex_program
522 extern PFNGLVERTEXATTRIB1FARBPROC blVertexAttrib1fARB;
523 extern PFNGLVERTEXATTRIB1FVARBPROC blVertexAttrib1fvARB;
524 extern PFNGLVERTEXATTRIB2FARBPROC blVertexAttrib2fARB;
525 extern PFNGLVERTEXATTRIB2FVARBPROC blVertexAttrib2fvARB;
526 extern PFNGLVERTEXATTRIB3FARBPROC blVertexAttrib3fARB;
527 extern PFNGLVERTEXATTRIB3FVARBPROC blVertexAttrib3fvARB;
528 extern PFNGLVERTEXATTRIB4FARBPROC blVertexAttrib4fARB;
529 extern PFNGLVERTEXATTRIB4FVARBPROC blVertexAttrib4fvARB;
530 extern PFNGLGETPROGRAMSTRINGARBPROC blGetProgramStringARB;
531 extern PFNGLGETVERTEXATTRIBDVARBPROC blGetVertexAttribdvARB;
532 extern PFNGLGETVERTEXATTRIBFVARBPROC blGetVertexAttribfvARB;
533 extern PFNGLGETVERTEXATTRIBIVARBPROC blGetVertexAttribivARB;
534 #endif
535
536 /*
537 #ifdef GL_EXT_compiled_vertex_array
538 extern PFNGLLOCKARRAYSEXTPROC blLockArraysEXT;
539 extern PFNGLUNLOCKARRAYSEXTPROC blUnlockArraysEXT;
540 #endif
541 */
542 } /* namespace bgl */
543
544
545 #endif /* __RAS_GLEXTENSIONMANAGER_H__ */