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