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