Skip to content
Browse files

Initial revision

svn path=/trunk/tsunami-bindings/; revision=24747
  • Loading branch information...
0 parents commit 45309a5e4434fea5aa82a3533aa7cd82510bb61f Vladimir Vukicevic committed Mar 30, 2004
Showing with 6,044 additions and 0 deletions.
  1. +2 −0 AUTHORS
  2. +340 −0 COPYING.GPL
  3. +5 −0 CORE_files
  4. +240 −0 EXT_files
  5. +21 −0 MIT.X11
  6. +34 −0 Makefile
  7. +56 −0 README
  8. +119 −0 TsunamiBindingsCore.cs
  9. +293 −0 csgen.pl
  10. +3 −0 gl_postamble.cs
  11. +170 −0 gl_postprocess.cs
  12. +44 −0 gl_preamble.cs
  13. +2 −0 glcore/GLX_VERSION_1_2
  14. +80 −0 glcore/GLX_VERSION_1_3
  15. +4 −0 glcore/GLX_VERSION_1_4
  16. +1,021 −0 glcore/GL_VERSION_1_1
  17. +46 −0 glcore/GL_VERSION_1_2
  18. +144 −0 glcore/GL_VERSION_1_3
  19. +85 −0 glcore/GL_VERSION_1_4
  20. +73 −0 glcore/GL_VERSION_1_5
  21. +2 −0 glext/GLU_EXT_nurbs_tessellator
  22. +2 −0 glext/GLU_EXT_object_space_tess
  23. +3 −0 glext/GLU_SGI_filter4_parameters
  24. +4 −0 glext/GLX_3DFX_multisample
  25. +3 −0 glext/GLX_ARB_get_proc_address
  26. +4 −0 glext/GLX_ARB_multisample
  27. +2 −0 glext/GLX_ATI_pixel_format_float
  28. +39 −0 glext/GLX_ATI_render_texture
  29. +10 −0 glext/GLX_EXT_import_context
  30. +2 −0 glext/GLX_EXT_scene_marker
  31. +18 −0 glext/GLX_EXT_visual_info
  32. +5 −0 glext/GLX_EXT_visual_rating
  33. +3 −0 glext/GLX_MESA_copy_sub_buffer
  34. +3 −0 glext/GLX_MESA_pixmap_colormap
  35. +3 −0 glext/GLX_MESA_release_buffers
  36. +5 −0 glext/GLX_MESA_set_3dfx_mode
  37. +3 −0 glext/GLX_NV_float_buffer
  38. +4 −0 glext/GLX_NV_vertex_array_range
  39. +6 −0 glext/GLX_OML_swap_method
  40. +7 −0 glext/GLX_OML_sync_control
  41. +3 −0 glext/GLX_SGIS_blended_overlay
  42. +11 −0 glext/GLX_SGIS_color_range
  43. +4 −0 glext/GLX_SGIS_multisample
  44. +3 −0 glext/GLX_SGIS_shared_multisample
  45. +21 −0 glext/GLX_SGIX_fbconfig
  46. +34 −0 glext/GLX_SGIX_pbuffer
  47. +4 −0 glext/GLX_SGIX_swap_barrier
  48. +3 −0 glext/GLX_SGIX_swap_group
  49. +9 −0 glext/GLX_SGIX_video_resize
  50. +3 −0 glext/GLX_SGIX_visual_select_group
  51. +3 −0 glext/GLX_SGI_cushion
  52. +4 −0 glext/GLX_SGI_make_current_read
  53. +3 −0 glext/GLX_SGI_swap_control
  54. +4 −0 glext/GLX_SGI_video_sync
  55. +3 −0 glext/GLX_SUN_get_transparent_index
  56. +6 −0 glext/GLX_SUN_video_resize
  57. +8 −0 glext/GL_3DFX_multisample
  58. +3 −0 glext/GL_3DFX_tbuffer
  59. +4 −0 glext/GL_3DFX_texture_compression_FXT1
  60. +3 −0 glext/GL_APPLE_client_storage
  61. +10 −0 glext/GL_APPLE_element_array
  62. +12 −0 glext/GL_APPLE_fence
  63. +16 −0 glext/GL_APPLE_float_pixels
  64. +3 −0 glext/GL_APPLE_specular_vector
  65. +11 −0 glext/GL_APPLE_texture_range
  66. +3 −0 glext/GL_APPLE_transform_hint
  67. +7 −0 glext/GL_APPLE_vertex_array_object
  68. +12 −0 glext/GL_APPLE_vertex_array_range
  69. +5 −0 glext/GL_APPLE_ycbcr_422
  70. +7 −0 glext/GL_ARB_depth_texture
  71. +17 −0 glext/GL_ARB_fragment_program
  72. +2 −0 glext/GL_ARB_fragment_program_shadow
  73. +4 −0 glext/GL_ARB_fragment_shader
  74. +110 −0 glext/GL_ARB_imaging
  75. +17 −0 glext/GL_ARB_matrix_palette
  76. +14 −0 glext/GL_ARB_multisample
  77. +71 −0 glext/GL_ARB_multitexture
  78. +15 −0 glext/GL_ARB_occlusion_query
  79. +8 −0 glext/GL_ARB_point_parameters
  80. +4 −0 glext/GL_ARB_point_sprite
  81. +69 −0 glext/GL_ARB_shader_objects
  82. +2 −0 glext/GL_ARB_shading_language_100
  83. +5 −0 glext/GL_ARB_shadow
  84. +3 −0 glext/GL_ARB_shadow_ambient
  85. +3 −0 glext/GL_ARB_texture_border_clamp
  86. +20 −0 glext/GL_ARB_texture_compression
  87. +14 −0 glext/GL_ARB_texture_cube_map
  88. +2 −0 glext/GL_ARB_texture_env_add
  89. +24 −0 glext/GL_ARB_texture_env_combine
  90. +2 −0 glext/GL_ARB_texture_env_crossbar
  91. +4 −0 glext/GL_ARB_texture_env_dot3
  92. +3 −0 glext/GL_ARB_texture_mirrored_repeat
  93. +2 −0 glext/GL_ARB_texture_non_power_of_two
  94. +6 −0 glext/GL_ARB_transpose_matrix
  95. +54 −0 glext/GL_ARB_vertex_blend
  96. +58 −0 glext/GL_ARB_vertex_buffer_object
  97. +143 −0 glext/GL_ARB_vertex_program
  98. +12 −0 glext/GL_ARB_vertex_shader
  99. +18 −0 glext/GL_ARB_window_pos
  100. +8 −0 glext/GL_ATIX_point_sprites
  101. +5 −0 glext/GL_ATIX_texture_env_combine3
  102. +5 −0 glext/GL_ATIX_texture_env_route
  103. +3 −0 glext/GL_ATIX_vertex_shader_output_point_size
  104. +20 −0 glext/GL_ATI_draw_buffers
  105. +8 −0 glext/GL_ATI_element_array
  106. +14 −0 glext/GL_ATI_envmap_bumpmap
  107. +60 −0 glext/GL_ATI_fragment_shader
  108. +4 −0 glext/GL_ATI_map_object_buffer
  109. +13 −0 glext/GL_ATI_pn_triangles
  110. +8 −0 glext/GL_ATI_separate_stencil
  111. +3 −0 glext/GL_ATI_text_fragment_shader
  112. +5 −0 glext/GL_ATI_texture_env_combine3
  113. +14 −0 glext/GL_ATI_texture_float
  114. +4 −0 glext/GL_ATI_texture_mirror_once
  115. +22 −0 glext/GL_ATI_vertex_array_object
  116. +5 −0 glext/GL_ATI_vertex_attrib_array_object
  117. +49 −0 glext/GL_ATI_vertex_streams
  118. +6 −0 glext/GL_EXT_422_pixels
  119. +3 −0 glext/GL_EXT_abgr
  120. +4 −0 glext/GL_EXT_bgra
  121. +8 −0 glext/GL_EXT_blend_color
  122. +5 −0 glext/GL_EXT_blend_equation_separate
  123. +7 −0 glext/GL_EXT_blend_func_separate
  124. +2 −0 glext/GL_EXT_blend_logic_op
  125. +7 −0 glext/GL_EXT_blend_minmax
  126. +4 −0 glext/GL_EXT_blend_subtract
  127. +3 −0 glext/GL_EXT_clip_volume_hint
  128. +6 −0 glext/GL_EXT_cmyka
  129. +4 −0 glext/GL_EXT_color_subtable
  130. +4 −0 glext/GL_EXT_compiled_vertex_array
  131. +35 −0 glext/GL_EXT_convolution
  132. +18 −0 glext/GL_EXT_coordinate_frame
  133. +7 −0 glext/GL_EXT_copy_texture
  134. +4 −0 glext/GL_EXT_cull_vertex
  135. +5 −0 glext/GL_EXT_depth_bounds_test
  136. +2 −0 glext/GL_EXT_draw_range_elements
  137. +15 −0 glext/GL_EXT_fog_coord
  138. +34 −0 glext/GL_EXT_fragment_lighting
  139. +25 −0 glext/GL_EXT_histogram
  140. +2 −0 glext/GL_EXT_index_array_formats
  141. +3 −0 glext/GL_EXT_index_func
  142. +3 −0 glext/GL_EXT_index_material
  143. +2 −0 glext/GL_EXT_index_texture
  144. +15 −0 glext/GL_EXT_light_texture
  145. +2 −0 glext/GL_EXT_misc_attribute
  146. +4 −0 glext/GL_EXT_multi_draw_arrays
  147. +21 −0 glext/GL_EXT_multisample
  148. +7 −0 glext/GL_EXT_packed_pixels
  149. +29 −0 glext/GL_EXT_paletted_texture
  150. +17 −0 glext/GL_EXT_pixel_transform
  151. +2 −0 glext/GL_EXT_pixel_transform_color_table
  152. +8 −0 glext/GL_EXT_point_parameters
  153. +6 −0 glext/GL_EXT_polygon_offset
  154. +2 −0 glext/GL_EXT_rescale_normal
  155. +4 −0 glext/GL_EXT_scene_marker
  156. +26 −0 glext/GL_EXT_secondary_color
  157. +5 −0 glext/GL_EXT_separate_specular_color
  158. +2 −0 glext/GL_EXT_shadow_funcs
  159. +3 −0 glext/GL_EXT_shared_texture_palette
  160. +5 −0 glext/GL_EXT_stencil_two_side
  161. +4 −0 glext/GL_EXT_stencil_wrap
  162. +5 −0 glext/GL_EXT_subtexture
  163. +44 −0 glext/GL_EXT_texture
  164. +12 −0 glext/GL_EXT_texture3D
  165. +6 −0 glext/GL_EXT_texture_compression_s3tc
  166. +14 −0 glext/GL_EXT_texture_cube_map
  167. +3 −0 glext/GL_EXT_texture_edge_clamp
  168. +13 −0 glext/GL_EXT_texture_env
  169. +2 −0 glext/GL_EXT_texture_env_add
  170. +23 −0 glext/GL_EXT_texture_env_combine
  171. +4 −0 glext/GL_EXT_texture_env_dot3
  172. +4 −0 glext/GL_EXT_texture_filter_anisotropic
  173. +5 −0 glext/GL_EXT_texture_lod_bias
  174. +5 −0 glext/GL_EXT_texture_mirror_clamp
  175. +13 −0 glext/GL_EXT_texture_object
  176. +5 −0 glext/GL_EXT_texture_perturb_normal
  177. +6 −0 glext/GL_EXT_texture_rectangle
  178. +44 −0 glext/GL_EXT_vertex_array
  179. +155 −0 glext/GL_EXT_vertex_shader
  180. +18 −0 glext/GL_EXT_vertex_weighting
  181. +2 −0 glext/GL_HP_convolution_border_modes
  182. +8 −0 glext/GL_HP_image_transform
  183. +4 −0 glext/GL_HP_occlusion_test
  184. +2 −0 glext/GL_HP_texture_lighting
  185. +3 −0 glext/GL_IBM_cull_vertex
  186. +4 −0 glext/GL_IBM_multimode_draw_arrays
  187. +3 −0 glext/GL_IBM_rasterpos_clip
  188. +4 −0 glext/GL_IBM_static_data
  189. +3 −0 glext/GL_IBM_texture_mirrored_repeat
  190. +26 −0 glext/GL_IBM_vertex_array_lists
  191. +10 −0 glext/GL_INGR_color_clamp
  192. +3 −0 glext/GL_INGR_interlace_read
  193. +11 −0 glext/GL_INTEL_parallel_arrays
  194. +4 −0 glext/GL_INTEL_texture_scissor
  195. +3 −0 glext/GL_MESA_pack_invert
  196. +3 −0 glext/GL_MESA_resize_buffers
  197. +26 −0 glext/GL_MESA_window_pos
  198. +5 −0 glext/GL_MESA_ycbcr_texture
  199. +2 −0 glext/GL_NV_blend_square
  200. +4 −0 glext/GL_NV_copy_depth_to_color
  201. +3 −0 glext/GL_NV_depth_clamp
  202. +9 −0 glext/GL_NV_element_array
  203. +35 −0 glext/GL_NV_evaluators
  204. +12 −0 glext/GL_NV_fence
  205. +17 −0 glext/GL_NV_float_buffer
  206. +5 −0 glext/GL_NV_fog_distance
  207. +14 −0 glext/GL_NV_fragment_program
  208. +50 −0 glext/GL_NV_half_float
  209. +4 −0 glext/GL_NV_light_max_exponent
  210. +3 −0 glext/GL_NV_multisample_filter_hint
  211. +13 −0 glext/GL_NV_occlusion_query
  212. +4 −0 glext/GL_NV_packed_depth_stencil
  213. +10 −0 glext/GL_NV_pixel_data_range
  214. +7 −0 glext/GL_NV_point_sprite
  215. +6 −0 glext/GL_NV_primitive_restart
  216. +66 −0 glext/GL_NV_register_combiners
  217. +5 −0 glext/GL_NV_register_combiners2
  218. +5 −0 glext/GL_NV_texgen_emboss
  219. +4 −0 glext/GL_NV_texgen_reflection
  220. +2 −0 glext/GL_NV_texture_compression_vtc
  221. +7 −0 glext/GL_NV_texture_env_combine4
  222. +3 −0 glext/GL_NV_texture_expand_normal
  223. +6 −0 glext/GL_NV_texture_rectangle
  224. +72 −0 glext/GL_NV_texture_shader
  225. +30 −0 glext/GL_NV_texture_shader2
  226. +19 −0 glext/GL_NV_texture_shader3
  227. +9 −0 glext/GL_NV_vertex_array_range
  228. +3 −0 glext/GL_NV_vertex_array_range2
  229. +149 −0 glext/GL_NV_vertex_program
  230. +2 −0 glext/GL_NV_vertex_program1_1
  231. +2 −0 glext/GL_NV_vertex_program2
  232. +4 −0 glext/GL_OML_interlace
  233. +8 −0 glext/GL_OML_resample
  234. +4 −0 glext/GL_OML_subsample
  235. +22 −0 glext/GL_PGI_misc_hints
  236. +24 −0 glext/GL_PGI_vertex_hints
  237. +4 −0 glext/GL_REND_screen_coordinates
  238. +8 −0 glext/GL_S3_s3tc
  239. +20 −0 glext/GL_SGIS_color_range
  240. +4 −0 glext/GL_SGIS_detail_texture
  241. +4 −0 glext/GL_SGIS_fog_function
  242. +4 −0 glext/GL_SGIS_generate_mipmap
  243. +23 −0 glext/GL_SGIS_multisample
  244. +2 −0 glext/GL_SGIS_pixel_texture
  245. +4 −0 glext/GL_SGIS_sharpen_texture
  246. +4 −0 glext/GL_SGIS_texture4D
  247. +3 −0 glext/GL_SGIS_texture_border_clamp
  248. +3 −0 glext/GL_SGIS_texture_edge_clamp
  249. +4 −0 glext/GL_SGIS_texture_filter4
  250. +6 −0 glext/GL_SGIS_texture_lod
  251. +2 −0 glext/GL_SGIS_texture_select
  252. +9 −0 glext/GL_SGIX_async
  253. +4 −0 glext/GL_SGIX_async_histogram
  254. +8 −0 glext/GL_SGIX_async_pixel
  255. +4 −0 glext/GL_SGIX_blend_alpha_minmax
  256. +2 −0 glext/GL_SGIX_clipmap
  257. +5 −0 glext/GL_SGIX_depth_texture
  258. +3 −0 glext/GL_SGIX_flush_raster
  259. +4 −0 glext/GL_SGIX_fog_offset
  260. +6 −0 glext/GL_SGIX_fog_texture
  261. +19 −0 glext/GL_SGIX_fragment_specular_lighting
  262. +3 −0 glext/GL_SGIX_framezoom
  263. +3 −0 glext/GL_SGIX_interlace
  264. +2 −0 glext/GL_SGIX_ir_instrument1
  265. +2 −0 glext/GL_SGIX_list_priority
  266. +3 −0 glext/GL_SGIX_pixel_texture
  267. +2 −0 glext/GL_SGIX_pixel_texture_bits
  268. +3 −0 glext/GL_SGIX_reference_plane
  269. +7 −0 glext/GL_SGIX_resample
  270. +2 −0 glext/GL_SGIX_shadow
  271. +3 −0 glext/GL_SGIX_shadow_ambient
  272. +6 −0 glext/GL_SGIX_sprite
  273. +3 −0 glext/GL_SGIX_tag_sample_buffer
  274. +2 −0 glext/GL_SGIX_texture_add_env
  275. +5 −0 glext/GL_SGIX_texture_coordinate_clamp
  276. +2 −0 glext/GL_SGIX_texture_lod_bias
  277. +3 −0 glext/GL_SGIX_texture_multi_buffer
  278. +30 −0 glext/GL_SGIX_texture_range
  279. +6 −0 glext/GL_SGIX_texture_scale_bias
  280. +4 −0 glext/GL_SGIX_vertex_preclip
  281. +4 −0 glext/GL_SGIX_vertex_preclip_hint
  282. +2 −0 glext/GL_SGIX_ycrcb
  283. +13 −0 glext/GL_SGI_color_matrix
  284. +25 −0 glext/GL_SGI_color_table
  285. +4 −0 glext/GL_SGI_texture_color_table
  286. +5 −0 glext/GL_SUNX_constant_data
  287. +3 −0 glext/GL_SUN_convolution_border_modes
  288. +12 −0 glext/GL_SUN_global_alpha
  289. +4 −0 glext/GL_SUN_mesh_array
  290. +3 −0 glext/GL_SUN_read_video_pixels
  291. +3 −0 glext/GL_SUN_slice_accum
  292. +26 −0 glext/GL_SUN_triangle_list
  293. +42 −0 glext/GL_SUN_vertex
  294. +4 −0 glext/GL_WIN_phong_shading
  295. +3 −0 glext/GL_WIN_specular_fog
  296. +3 −0 glext/GL_WIN_swap_hint
  297. +4 −0 glext/WGL_3DFX_multisample
  298. +10 −0 glext/WGL_ARB_buffer_region
  299. +3 −0 glext/WGL_ARB_extensions_string
  300. +4 −0 glext/WGL_ARB_make_current_read
Sorry, we could not display the entire diff because too many files (324) changed.
2 AUTHORS
@@ -0,0 +1,2 @@
+Vladimir Vukicevic <vladimir@pobox.com>
+
340 COPYING.GPL
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
5 CORE_files
@@ -0,0 +1,5 @@
+glcore/GL_VERSION_1_1
+glcore/GL_VERSION_1_2
+glcore/GL_VERSION_1_3
+glcore/GL_VERSION_1_4
+glcore/GL_VERSION_1_5
240 EXT_files
@@ -0,0 +1,240 @@
+glext/GL_3DFX_multisample
+glext/GL_3DFX_tbuffer
+glext/GL_3DFX_texture_compression_FXT1
+glext/GL_APPLE_client_storage
+glext/GL_APPLE_element_array
+glext/GL_APPLE_fence
+glext/GL_APPLE_float_pixels
+glext/GL_APPLE_specular_vector
+glext/GL_APPLE_texture_range
+glext/GL_APPLE_transform_hint
+glext/GL_APPLE_vertex_array_object
+glext/GL_APPLE_vertex_array_range
+glext/GL_APPLE_ycbcr_422
+glext/GL_ARB_depth_texture
+glext/GL_ARB_fragment_program
+glext/GL_ARB_fragment_program_shadow
+glext/GL_ARB_fragment_shader
+glext/GL_ARB_imaging
+glext/GL_ARB_matrix_palette
+glext/GL_ARB_multisample
+glext/GL_ARB_multitexture
+glext/GL_ARB_occlusion_query
+glext/GL_ARB_point_parameters
+glext/GL_ARB_point_sprite
+glext/GL_ARB_shader_objects
+glext/GL_ARB_shading_language_100
+glext/GL_ARB_shadow
+glext/GL_ARB_shadow_ambient
+glext/GL_ARB_texture_border_clamp
+glext/GL_ARB_texture_compression
+glext/GL_ARB_texture_cube_map
+glext/GL_ARB_texture_env_add
+glext/GL_ARB_texture_env_combine
+glext/GL_ARB_texture_env_crossbar
+glext/GL_ARB_texture_env_dot3
+glext/GL_ARB_texture_mirrored_repeat
+glext/GL_ARB_texture_non_power_of_two
+glext/GL_ARB_transpose_matrix
+glext/GL_ARB_vertex_blend
+glext/GL_ARB_vertex_buffer_object
+glext/GL_ARB_vertex_program
+glext/GL_ARB_vertex_shader
+glext/GL_ARB_window_pos
+glext/GL_ATIX_point_sprites
+glext/GL_ATIX_texture_env_combine3
+glext/GL_ATIX_texture_env_route
+glext/GL_ATIX_vertex_shader_output_point_size
+glext/GL_ATI_draw_buffers
+glext/GL_ATI_element_array
+glext/GL_ATI_envmap_bumpmap
+glext/GL_ATI_fragment_shader
+glext/GL_ATI_map_object_buffer
+glext/GL_ATI_pn_triangles
+glext/GL_ATI_separate_stencil
+glext/GL_ATI_text_fragment_shader
+glext/GL_ATI_texture_env_combine3
+glext/GL_ATI_texture_float
+glext/GL_ATI_texture_mirror_once
+glext/GL_ATI_vertex_array_object
+glext/GL_ATI_vertex_attrib_array_object
+glext/GL_ATI_vertex_streams
+glext/GL_EXT_422_pixels
+glext/GL_EXT_abgr
+glext/GL_EXT_bgra
+glext/GL_EXT_blend_color
+glext/GL_EXT_blend_equation_separate
+glext/GL_EXT_blend_func_separate
+glext/GL_EXT_blend_logic_op
+glext/GL_EXT_blend_minmax
+glext/GL_EXT_blend_subtract
+glext/GL_EXT_clip_volume_hint
+glext/GL_EXT_cmyka
+glext/GL_EXT_color_subtable
+glext/GL_EXT_compiled_vertex_array
+glext/GL_EXT_convolution
+glext/GL_EXT_coordinate_frame
+glext/GL_EXT_copy_texture
+glext/GL_EXT_cull_vertex
+glext/GL_EXT_depth_bounds_test
+glext/GL_EXT_draw_range_elements
+glext/GL_EXT_fog_coord
+glext/GL_EXT_fragment_lighting
+glext/GL_EXT_histogram
+glext/GL_EXT_index_array_formats
+glext/GL_EXT_index_func
+glext/GL_EXT_index_material
+glext/GL_EXT_index_texture
+glext/GL_EXT_light_texture
+glext/GL_EXT_misc_attribute
+glext/GL_EXT_multi_draw_arrays
+glext/GL_EXT_multisample
+glext/GL_EXT_packed_pixels
+glext/GL_EXT_paletted_texture
+glext/GL_EXT_pixel_transform
+glext/GL_EXT_pixel_transform_color_table
+glext/GL_EXT_point_parameters
+glext/GL_EXT_polygon_offset
+glext/GL_EXT_rescale_normal
+glext/GL_EXT_scene_marker
+glext/GL_EXT_secondary_color
+glext/GL_EXT_separate_specular_color
+glext/GL_EXT_shadow_funcs
+glext/GL_EXT_shared_texture_palette
+glext/GL_EXT_stencil_two_side
+glext/GL_EXT_stencil_wrap
+glext/GL_EXT_subtexture
+glext/GL_EXT_texture
+glext/GL_EXT_texture3D
+glext/GL_EXT_texture_compression_s3tc
+glext/GL_EXT_texture_cube_map
+glext/GL_EXT_texture_edge_clamp
+glext/GL_EXT_texture_env
+glext/GL_EXT_texture_env_add
+glext/GL_EXT_texture_env_combine
+glext/GL_EXT_texture_env_dot3
+glext/GL_EXT_texture_filter_anisotropic
+glext/GL_EXT_texture_lod_bias
+glext/GL_EXT_texture_mirror_clamp
+glext/GL_EXT_texture_object
+glext/GL_EXT_texture_perturb_normal
+glext/GL_EXT_texture_rectangle
+glext/GL_EXT_vertex_array
+glext/GL_EXT_vertex_shader
+glext/GL_EXT_vertex_weighting
+glext/GL_HP_convolution_border_modes
+glext/GL_HP_image_transform
+glext/GL_HP_occlusion_test
+glext/GL_HP_texture_lighting
+glext/GL_IBM_cull_vertex
+glext/GL_IBM_multimode_draw_arrays
+glext/GL_IBM_rasterpos_clip
+glext/GL_IBM_static_data
+glext/GL_IBM_texture_mirrored_repeat
+glext/GL_IBM_vertex_array_lists
+glext/GL_INGR_color_clamp
+glext/GL_INGR_interlace_read
+glext/GL_INTEL_parallel_arrays
+glext/GL_INTEL_texture_scissor
+glext/GL_MESA_pack_invert
+glext/GL_MESA_resize_buffers
+glext/GL_MESA_window_pos
+glext/GL_MESA_ycbcr_texture
+glext/GL_NV_blend_square
+glext/GL_NV_copy_depth_to_color
+glext/GL_NV_depth_clamp
+glext/GL_NV_element_array
+glext/GL_NV_evaluators
+glext/GL_NV_fence
+glext/GL_NV_float_buffer
+glext/GL_NV_fog_distance
+glext/GL_NV_fragment_program
+glext/GL_NV_half_float
+glext/GL_NV_light_max_exponent
+glext/GL_NV_multisample_filter_hint
+glext/GL_NV_occlusion_query
+glext/GL_NV_packed_depth_stencil
+glext/GL_NV_pixel_data_range
+glext/GL_NV_point_sprite
+glext/GL_NV_primitive_restart
+glext/GL_NV_register_combiners
+glext/GL_NV_register_combiners2
+glext/GL_NV_texgen_emboss
+glext/GL_NV_texgen_reflection
+glext/GL_NV_texture_compression_vtc
+glext/GL_NV_texture_env_combine4
+glext/GL_NV_texture_expand_normal
+glext/GL_NV_texture_rectangle
+glext/GL_NV_texture_shader
+glext/GL_NV_texture_shader2
+glext/GL_NV_texture_shader3
+glext/GL_NV_vertex_array_range
+glext/GL_NV_vertex_array_range2
+glext/GL_NV_vertex_program
+glext/GL_NV_vertex_program1_1
+glext/GL_NV_vertex_program2
+glext/GL_OML_interlace
+glext/GL_OML_resample
+glext/GL_OML_subsample
+glext/GL_PGI_misc_hints
+glext/GL_PGI_vertex_hints
+glext/GL_REND_screen_coordinates
+glext/GL_S3_s3tc
+glext/GL_SGIS_color_range
+glext/GL_SGIS_detail_texture
+glext/GL_SGIS_fog_function
+glext/GL_SGIS_generate_mipmap
+glext/GL_SGIS_multisample
+glext/GL_SGIS_pixel_texture
+glext/GL_SGIS_sharpen_texture
+glext/GL_SGIS_texture4D
+glext/GL_SGIS_texture_border_clamp
+glext/GL_SGIS_texture_edge_clamp
+glext/GL_SGIS_texture_filter4
+glext/GL_SGIS_texture_lod
+glext/GL_SGIS_texture_select
+glext/GL_SGIX_async
+glext/GL_SGIX_async_histogram
+glext/GL_SGIX_async_pixel
+glext/GL_SGIX_blend_alpha_minmax
+glext/GL_SGIX_clipmap
+glext/GL_SGIX_depth_texture
+glext/GL_SGIX_flush_raster
+glext/GL_SGIX_fog_offset
+glext/GL_SGIX_fog_texture
+glext/GL_SGIX_fragment_specular_lighting
+glext/GL_SGIX_framezoom
+glext/GL_SGIX_interlace
+glext/GL_SGIX_ir_instrument1
+glext/GL_SGIX_list_priority
+glext/GL_SGIX_pixel_texture
+glext/GL_SGIX_pixel_texture_bits
+glext/GL_SGIX_reference_plane
+glext/GL_SGIX_resample
+glext/GL_SGIX_shadow
+glext/GL_SGIX_shadow_ambient
+glext/GL_SGIX_sprite
+glext/GL_SGIX_tag_sample_buffer
+glext/GL_SGIX_texture_add_env
+glext/GL_SGIX_texture_coordinate_clamp
+glext/GL_SGIX_texture_lod_bias
+glext/GL_SGIX_texture_multi_buffer
+glext/GL_SGIX_texture_range
+glext/GL_SGIX_texture_scale_bias
+glext/GL_SGIX_vertex_preclip
+glext/GL_SGIX_vertex_preclip_hint
+glext/GL_SGIX_ycrcb
+glext/GL_SGI_color_matrix
+glext/GL_SGI_color_table
+glext/GL_SGI_texture_color_table
+glext/GL_SUNX_constant_data
+glext/GL_SUN_convolution_border_modes
+glext/GL_SUN_global_alpha
+glext/GL_SUN_mesh_array
+glext/GL_SUN_read_video_pixels
+glext/GL_SUN_slice_accum
+glext/GL_SUN_triangle_list
+glext/GL_SUN_vertex
+glext/GL_WIN_phong_shading
+glext/GL_WIN_specular_fog
+glext/GL_WIN_swap_hint
21 MIT.X11
@@ -0,0 +1,21 @@
+Copyright (c) 2004 Vladimir Vukicevic and the individuals listed
+on the ChangeLog entries.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 Makefile
@@ -0,0 +1,34 @@
+MCS = mcs
+MCSFLAGS =
+CSGENOPTS =
+RUNTIME = mono
+# MCS = csc
+# MCSFLAGS = /d:WIN32
+# CSGENOPTS = WIN32
+# RUNTIME =
+CORE_FILES = `cat CORE_files`
+EXT_FILES = `cat EXT_files`
+
+all: TsunamiBindingsGl.dll
+
+TsunamiBindingsGl.dll: TsunamiBindingsGl-pre.dll gl_postprocess.exe
+ $(RUNTIME) ./gl_postprocess.exe TsunamiBindingsGl-pre.dll TsunamiBindingsGl.dll
+
+gl_postprocess.exe: gl_postprocess.cs TsunamiBindingsCore.dll
+ $(MCS) $(MCSFLAGS) /r:TsunamiBindingsCore.dll gl_postprocess.cs
+
+TsunamiBindingsCore.dll: TsunamiBindingsCore.cs
+ $(MCS) $(MCSFLAGS) /target:library TsunamiBindingsCore.cs
+
+TsunamiBindingsGl-pre.dll: TsunamiBindingsGl-pre.cs TsunamiBindingsCore.dll
+ $(MCS) $(MCSFLAGS) /target:library /unsafe /r:TsunamiBindingsCore.dll TsunamiBindingsGl-pre.cs
+
+TsunamiBindingsGl-pre.cs: TsunamiBindingsGl-part.cs
+ cat gl_preamble.cs TsunamiBindingsGl-part.cs gl_postamble.cs > TsunamiBindingsGl-pre.cs
+
+TsunamiBindingsGl-part.cs: csgen.pl
+ perl csgen.pl $(CSGENOPTS) CORE $(CORE_FILES) EXT $(EXT_FILES) > TsunamiBindingsGl-part.cs
+
+clean:
+ rm -f gl_postprocess.exe TsunamiBindingsCore.dll TsunamiBindingsGl-pre.dll TsunamiBindingsGl-pre.cs TsunamiBindingsGl-part.cs TsunamiBindingsGl.dll
+
56 README
@@ -0,0 +1,56 @@
+Tsunami.Bindings
+================
+March, 2004
+Vladimir Vukicevic
+vladimir@pobox.com
+
+Introduction
+------------
+
+Tsunami.Bindings is an OpenGL C# binding that efficiently deals with
+extensions. Building involves potentially editing the makefile if
+you're on WIN32, and then typing "make". Note that a cygwin
+environment is assumed; at the very least, make and perl should be
+available.
+
+Both TsunamiBindingsCore.dll and TsunamiBindingsGl.dll need to be
+referenced in your application. There is no wrapping of GLX/WGL/AGL
+functions or extensions done at the moment, though that may happen in
+the future (patches appreciated!).
+
+Note that the "gl" and "GL_" prefixes have been stripped from function
+and constant names; thus, Gl.ClearColor(...) instead of
+Gl.glClearColor(...). The GL_ prefix is left on a very few enumerants
+where the remainder of the symbol starts with a numeral. For example,
+GL_3D_... is left as GL_3D_... The prefix stripping can be disabled
+by editing csgen.pl.
+
+Extension Handling Strategy
+---------------------------
+
+For each extension that you want to use, you must do:
+
+ using Tsunami.Bindings;
+ GlExtensionLoader.GetInstance().LoadExtension
+ ("GL_ARB_vertex_buffer_object");
+
+These calls must take place after the OpenGL context is established,
+but obviously before any extension method invocations take place.
+
+Extension data is parsed from files which were spit out by the GLEW
+(http://glew.sourceforge.net/) tools, which process the extension
+specifications themselves. They are further hand-edited to include
+method overloads, allow the usage of array types, ref/out types, and
+similar. Note that this is an ongoing process; only a very small
+number of methods have been fully C#-ified, but the process to do so
+is very simple -- just edit the appropriate glcore/* or glext/* file,
+copy the line, and modify the signature to what it should be.
+
+A custom attribute is added to each extension method to identify its
+parent extension and original method name. LoadExtension() uses this
+attribute information to know which methods need to be loaded.
+
+The postprocessor takes the compiled assembly and generates a new
+assembly using Reflection.Emit, with IL to invoke the native methods
+at addresses stored in fields in the Gl class (which are filled in at
+LoadExtension time).
119 TsunamiBindingsCore.cs
@@ -0,0 +1,119 @@
+//
+// Tsunami.Bindings core
+//
+// Copyright (c) 2004 Vladimir Vukicevic <vladimir@pobox.com>
+//
+// Tsunami.Bindings code and DLLs are licensed under the MIT/X11
+// license. Please see the file MIT.X11 for more information.
+//
+
+using System;
+using System.Collections;
+using System.Runtime.InteropServices;
+using System.Reflection;
+
+namespace Tsunami.Bindings {
+ public class GlDetails {
+#if WIN32
+ public const string GL_NATIVE_LIBRARY = "opengl32.dll";
+ public const string GL_EXTENSION_QUERY_PROC = "wglGetProcAddress";
+ public const CallingConvention GL_NATIVE_CALLCONV = CallingConvention.StdCall;
+#elif MACOSX
+// I have no idea
+// public const string GL_NATIVE_LIBRARY = ;
+// public const string GL_EXTENSION_QUERY_PROC = "aglGetProcAddress";
+// public const CallingConvention GL_NATIVE_CALLCONV = CallingConvention.Cdecl;
+#else
+ public const string GL_NATIVE_LIBRARY = "libGL.so";
+ public const string GL_EXTENSION_QUERY_PROC = "glxGetProcAddress";
+ public const CallingConvention GL_NATIVE_CALLCONV = CallingConvention.Cdecl;
+#endif
+ }
+
+ [AttributeUsage(AttributeTargets.Method)]
+ public class OpenGLExtensionImport : Attribute {
+ public string ExtensionName;
+ public string EntryPoint;
+
+ public OpenGLExtensionImport (string ExtensionName, string EntryPoint) {
+ this.ExtensionName = ExtensionName;
+ this.EntryPoint = EntryPoint;
+ }
+ }
+
+ public class GlExtensionLoader {
+ private static Type tsunamigl;
+ private static GlExtensionLoader loaderInst;
+
+ private Hashtable loadedExtensions;
+
+ public static GlExtensionLoader GetInstance() {
+ if (loaderInst == null) {
+ loaderInst = new GlExtensionLoader();
+ }
+ return loaderInst;
+ }
+
+ [DllImport(GlDetails.GL_NATIVE_LIBRARY, EntryPoint=GlDetails.GL_EXTENSION_QUERY_PROC, CallingConvention=GlDetails.GL_NATIVE_CALLCONV)]
+ internal static extern IntPtr GetProcAddress(string s);
+
+ protected GlExtensionLoader () {
+ loadedExtensions = new Hashtable();
+ }
+
+ public bool LoadExtension (string extname) {
+ if (loadedExtensions.ContainsKey (extname)) {
+ return (bool) loadedExtensions[extname];
+ }
+
+ bool result = true;
+
+ Type glt = null;
+ Assembly [] asss = AppDomain.CurrentDomain.GetAssemblies();
+ foreach (Assembly a in asss) {
+ glt = a.GetType("Tsunami.Gl");
+ if (glt != null)
+ break;
+ }
+
+ if (glt == null) {
+ Console.WriteLine ("Couldn't find Tsunami.Gl assembly in current AppDomain!");
+ return false;
+ }
+
+ MethodInfo [] mis = glt.GetMethods (BindingFlags.Public |
+ BindingFlags.Static |
+ BindingFlags.DeclaredOnly);
+ foreach (MethodInfo mi in mis) {
+ object [] atts = mi.GetCustomAttributes (typeof(OpenGLExtensionImport), false);
+ if (atts.Length == 0) {
+ continue;
+ }
+
+ OpenGLExtensionImport oglext = (OpenGLExtensionImport) atts[0];
+ if (oglext.ExtensionName == extname) {
+ Console.WriteLine ("Loading " + oglext.EntryPoint + " for " + extname);
+
+ FieldInfo fi = glt.GetField ("ext__" + extname + "__" + oglext.EntryPoint,
+ BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly);
+ if (fi == null) {
+ Console.WriteLine ("Can't get extension field!");
+ continue;
+ }
+
+ IntPtr procaddr = GetProcAddress (oglext.EntryPoint);
+ if (procaddr == IntPtr.Zero) {
+ Console.WriteLine ("Failed for " + oglext.EntryPoint);
+ result = false;
+ break;
+ }
+
+ fi.SetValue (glt, procaddr);
+ }
+ }
+
+ loadedExtensions[extname] = result;
+ return result;
+ }
+ }
+}
293 csgen.pl
@@ -0,0 +1,293 @@
+##
+## csgen.pl
+## Copyright (C) 2004 Vladimir Vukicevic <vladimir@pobox.com>
+##
+## Portions taken from GLEW (http://glew.sourceforge.net/), which is
+## Copyright (C) 2004, 2003 Marcelo E. Magallon <mmagallo[at]debian org>
+## Copyright (C) 2004, 2003 Milan Ikits <milan ikits[at]ieee org>
+##
+## This program is distributed under the terms and conditions of the GNU
+## General Public License Version 2 as published by the Free Software
+## Foundation or, at your option, any later version.
+##
+## Please see the file "COPYING" for more information
+##
+use Data::Dumper;
+
+$strip_prefix = 1;
+#$cconv = "GlDetails.GL_NATIVE_CALLCONV";
+$cconv = "CallingConvention.Cdecl";
+
+my %regex = (extname => qr/^[A-Z][A-Za-z0-9_]+$/,
+ exturl => qr/^http.+$/,
+ function => qr/^(.+) ([a-z][a-z0-9_]*) \((.+)\)( *= .*)?$/i,
+ token => qr/^([A-Z][A-Z0-9_]*)\s+((?:0x)?[0-9A-F]+|[A-Z][A-Z0-9_]*)$/,
+ type => qr/^typedef\s+(.+)\s+([\*A-Za-z0-9_]+)$/,
+ exact => qr/.*;$/,
+ );
+
+my %typemap = ('GLenum' => 'unsigned int',
+ 'GLboolean' => 'bool', # uchar
+ 'GLbitfield' => 'unsigned int',
+ 'GLvoid' => 'void',
+ 'GLbyte' => 'byte',
+ 'GLshort' => 'short',
+ 'GLint' => 'int',
+ 'GLubyte' => 'unsigned byte',
+ 'GLushort' => 'unsigned short',
+ 'GLuint' => 'unsigned int',
+ 'GLsizei' => 'int',
+ 'GLfloat' => 'float',
+ 'GLdouble' => 'double',
+ 'GLclampd' => 'double',
+
+ 'GLsizeiptrARB' => 'IntPtr',
+ 'GLintptrARB' => 'IntPtr',
+ 'GLhalf' => 'unsigned short',
+ 'GLcharARB' => 'byte',
+ 'GLhandleARB' => 'int',
+
+
+ 'GLXContextID' => 'int',
+ 'GLXFBConfigIDSGIX' => 'int',
+ 'GLXPbufferSGIX' => 'int',
+);
+
+sub parse_ext($)
+{
+ my $filename = shift;
+ my @functions;
+ my %tokens = ();
+ my %types = ();
+ my @exacts = ();
+ my $extname = "";
+ my $exturl = "";
+
+ open EXT, "<$filename" or return;
+
+ while (<EXT>) {
+ chomp;
+ if (/$regex{extname}/) {
+ $extname = $_;
+ next;
+ } elsif (/$regex{exturl}/) {
+ $exturl = $_;
+ } elsif (s/^\s+//) {
+ if (/$regex{exact}/) {
+ push @exacts, $_;
+ } elsif (/$regex{type}/) {
+ my ($value, $name) = ($1, $2);
+ $types{$name} = $value;
+ } elsif (/$regex{token}/) {
+ my ($name, $value) = ($1, $2);
+ $tokens{$name} = $value;
+ } elsif (/$regex{function}/) {
+ my ($return, $name, $parms, $realname) = ($1, $2, $3, $4);
+
+ $realname =~ s/^ *= *//;
+ $realname =~ s/ *$//;
+
+ if ($realname eq "") {
+ $realname = $name;
+ }
+
+ push (@functions, {name => $name,
+ rtype => $return,
+ parms => $parms,
+ realname => $realname,
+ });
+ }
+ }
+ }
+
+ close EXT;
+
+ return ($extname, $exturl, \%types, \%tokens, \@functions, \@exacts);
+}
+
+sub output_header ($$)
+{
+ $extname = shift;
+ $exturl = shift;
+
+ print " //\n";
+ print " // $extname\n";
+ print " // $exturl\n";
+ print " //\n";
+}
+
+%enum_hash = ();
+
+sub output_enum ($$)
+{
+ $name = shift;
+ $val = shift;
+
+ if ($strip_prefix && !($name =~ /^GL_[0-9]/)) {
+ $name =~ s/^GL_//;
+ }
+
+ if ($strip_prefix && !($val =~ /^GL_[0-9]/)) {
+ $val =~ s/^GL_//;
+ }
+
+ if (defined($enum_hash{$name})) {
+ if (!($enum_hash{$name} eq $val)) {
+ print STDERR "$name previously defined as %enum_hash{$name} and now $val\n";
+ }
+ return;
+ }
+
+ $enum_hash{$name} = $val;
+ print " public const uint " . $name . " = " . $val . ";\n";
+}
+
+%seenextfields = ();
+
+sub output_func ($$)
+{
+ my $extname = shift;
+ my $fdata = shift;
+
+ $fname = $fdata->{'name'};
+ $usefname = $fname;
+ $frtype = $fdata->{'rtype'};
+ $fallparms = $fdata->{'parms'};
+ $unsafe = "";
+
+ # fix up some things that are keywords, argh
+ $fallparms =~ s/GLvoid/void/g;
+ $fallparms =~ s/const//g;
+ $fallparms =~ s/params/paramz/g;
+ $fallparms =~ s/ ref,/ glref,/g;
+ $fallparms =~ s/ ref *$/ glref/g;
+ $fallparms =~ s/ base/ glbase/g;
+ $fallparms =~ s/ out,/ glout,/g;
+ $fallparms =~ s/ out *$/ glout/g;
+ $fallparms =~ s/ in,/ glin,/g;
+ $fallparms =~ s/ in *$/ glin/g;
+ $fallparms =~ s/ object/ globj/g;
+ $fallparms =~ s/ string/ glstring/g;
+ # sigh
+ $fallparms =~ s/ m\[16\]/ *m/g;
+ $fallparms =~ s/ v\[\]/ *v/g;
+
+ # this function leaves off a name for the last parameter.
+ # sigh++
+ if ($usefname eq "glWindowPos4dMESA") {
+ $fallparms .= " w";
+ }
+
+ # nuke const's from the resturn type
+ $frtype =~ s/const//g;
+ # change GLvoid's to voids, as void can't
+ # be aliased
+ $frtype =~ s/GLvoid/void/g;
+
+ if ($strip_prefix) {
+ $usefname =~ s/^gl//;
+ }
+
+ if (defined $fdata->{'realname'}) {
+ $fname = $fdata->{'realname'};
+ }
+
+ # if the entire param list is void, then we "" it
+ if ($fallparms =~ /^ *void *$/i) {
+ $fallparms = "";
+ }
+
+ if ($fallparms =~ m/\*/ || $frtype =~ m/\*/) {
+ $unsafe = "unsafe";
+ }
+
+ ## The idea here is to automatically take things like
+ ## "GLfloat *f" and spit out bindings for
+ ## "GLfloat *f" and "GLfloat [] f"; also
+ ## if the name ended in something like "3fv", spit out
+ ## "ref Vector3 v" too. But, it's probably easiest to
+ ## just do these by hand, especially since we don't
+ ## really care to support glVertex*, glNormal*, etc.
+ if (0) {
+ # now rebuild the param lists
+ @paramlists = [];
+ @fparms = split (/, */, $fallparms);
+
+ foreach my $fp (@fparms) {
+ # A little gross -- we want types in $ft, but * placement
+ # is inconsistent.. so we strip any leading *'s from $fn
+ # and tack them onto the end of $ft
+ $fp =~ /(.*) ([^ ]*)/;
+ ($ft, $fn) = ($1, $2);
+ if ($fn =~ /^(\*+)(.*)/) {
+ $ft .= $1;
+ $fn = $2;
+ }
+
+ $ft =~ /( *\*+)*$/;
+ $stars = $1;
+ }
+ }
+
+ # if extname is 0, it means it's a core GL function
+ # and shouldn't get ExtensionAttribute info, but instead
+ # a straight DllImport
+ if ($extname eq "CORE") {
+ print " [DllImport(GlDetails.GL_NATIVE_LIBRARY, EntryPoint=\"$fname\", CallingConvention=$cconv, ExactSpelling=true)]\n";
+ print " public static extern $unsafe $frtype $usefname ($fallparms);\n";
+ } else {
+ # else this is an extension, so we need to not have a DllImport, but an attribute here
+ $extfield = "ext__" . $extname . "__" . $fname;
+ if (!defined($seenextfields{$extfield})) {
+ print " public static IntPtr $extfield = IntPtr.Zero;\n";
+ $seenextfields{$extfield} = 1;
+ }
+
+ print " [OpenGLExtensionImport(\"$extname\", \"$fname\")]\n";
+ print " public static $unsafe $frtype $usefname ($fallparms) {\n";
+ print " throw new InvalidOperationException(\"binding error\");\n";
+ print " }\n";
+ }
+
+
+ print "\n";
+}
+
+##
+## main
+##
+
+$is_core = 0;
+
+foreach my $extfile (@ARGV)
+{
+ if ($extfile eq "WIN32") {
+ $cconv = "CallingConvention.StdCall";
+ next;
+ } elsif ($extfile eq "CORE") {
+ $is_core = 1;
+ next;
+ } elsif ($extfile eq "EXT") {
+ $is_core = 0;
+ next;
+ }
+
+ my ($extname, $exturl, $types, $tokens, $funcs, $exacts) = parse_ext($extfile);
+
+ # write a header
+ output_header ($extname, $exturl);
+
+ print "\n";
+
+ # write the constant tokens
+ foreach my $tok (keys %$tokens) {
+ output_enum ($tok, $tokens->{$tok});
+ }
+
+ print "\n";
+
+ # now write funcs
+ foreach my $func (@$funcs) {
+ output_func ($is_core ? "CORE" : $extname, $func);
+ }
+}
3 gl_postamble.cs
@@ -0,0 +1,3 @@
+
+ }
+}
170 gl_postprocess.cs
@@ -0,0 +1,170 @@
+//
+// gl_postprocess.cs
+//
+// Copyright (C) 2004 Vladimir Vukicevic <vladimir@pobox.com>
+//
+// This file is licensed under the GNU GPL; for more information,
+// see the file COPYING.GPL
+//
+
+
+using System;
+using System.Collections;
+using System.Reflection;
+using System.Reflection.Emit;
+using System.Runtime.InteropServices;
+
+public class GLPostProcess {
+
+ // duplicated from GlDetails due to a mcs bug
+#if WIN32
+ public const string GL_NATIVE_LIBRARY = "opengl32.dll";
+ public const CallingConvention GL_NATIVE_CALLCONV = CallingConvention.StdCall;
+#elif MACOSX
+// I have no idea
+// public const string GL_NATIVE_LIBRARY = ;
+// public const CallingConvention GL_NATIVE_CALLCONV = CallingConvention.Cdecl;
+#else
+ public const string GL_NATIVE_LIBRARY = "libGL.so";
+ public const CallingConvention GL_NATIVE_CALLCONV = CallingConvention.Cdecl;
+#endif
+
+ public static void Main(string [] args) {
+ string inName = args[0];
+ string outName = args[1];
+
+#if WIN32
+ // The MS runtime doesn't support a bunch of queries on
+ // dynamic modules, so we have to track this stuff ourselves
+ Hashtable field_hash = new Hashtable();
+#endif
+
+ AssemblyName outAsName = new AssemblyName();
+ outAsName.Name = "TsunamiBindingsGl";
+
+ AssemblyBuilder abuilder = AppDomain.CurrentDomain.DefineDynamicAssembly
+ (outAsName, AssemblyBuilderAccess.Save);
+ ModuleBuilder mbuilder = abuilder.DefineDynamicModule(outName, outName);
+ TypeBuilder glbuilder = mbuilder.DefineType("Tsunami.Bindings.Gl",
+ TypeAttributes.Public |
+ TypeAttributes.Class |
+ TypeAttributes.Sealed);
+
+ Assembly inputAssembly = Assembly.LoadFrom(inName);
+ Type gltype = inputAssembly.GetType("Tsunami.Bindings.Gl");
+ MemberInfo [] glMembers = gltype.GetMembers(BindingFlags.Instance |
+ BindingFlags.Static |
+ BindingFlags.Public |
+ BindingFlags.NonPublic |
+ BindingFlags.DeclaredOnly);
+
+ foreach (MemberInfo qi in glMembers) {
+
+ // Fields
+ FieldInfo fi = qi as FieldInfo;
+ if (fi != null) {
+ // Console.WriteLine ("FIELD: " + fi.Name);
+ FieldBuilder fb = glbuilder.DefineField (fi.Name, fi.FieldType, fi.Attributes);
+ if (fi.FieldType != typeof(System.IntPtr)) {
+ fb.SetConstant (fi.GetValue (gltype));
+ } else {
+#if WIN32
+ // this is a slot to hold an extension addr,
+ // so we save it
+ field_hash[fi.Name] = fb;
+#endif
+ }
+ continue;
+ }
+
+ // Methods
+ MethodInfo mi = qi as MethodInfo;
+ if (mi != null) {
+ bool is_ext;
+ bool is_dll;
+ object [] extattrs = mi.GetCustomAttributes (typeof(Tsunami.Bindings.OpenGLExtensionImport), false);
+
+ is_ext = (extattrs.Length > 0);
+ is_dll = (mi.Attributes & MethodAttributes.PinvokeImpl) != 0;
+
+ ParameterInfo [] parms = mi.GetParameters();
+ Type [] methodSig = new Type [parms.Length];
+ for (int i = 0; i < parms.Length; i++) {
+ methodSig[i] = parms[i].ParameterType;
+ }
+
+ if (is_ext && is_dll) {
+ throw new InvalidOperationException ("Something can't be both ext and dll");
+ }
+
+ if (is_dll) {
+ // this is a normal DLL import'd method
+ // Console.WriteLine ("DLL import method: " + mi.Name);
+ MethodBuilder mb = glbuilder.DefinePInvokeMethod (mi.Name, GL_NATIVE_LIBRARY, "gl" + mi.Name,
+ mi.Attributes,
+ CallingConventions.Standard,
+ mi.ReturnType, methodSig,
+ GL_NATIVE_CALLCONV,
+ CharSet.Ansi);
+ } else if (is_ext) {
+ // this is an OpenGLExtensionImport method
+ // Console.WriteLine ("OpenGLExtensionImport method: " + mi.Name);
+ Tsunami.Bindings.OpenGLExtensionImport ogl = extattrs[0] as Tsunami.Bindings.OpenGLExtensionImport;
+
+ MethodBuilder mb = glbuilder.DefineMethod (mi.Name, mi.Attributes, mi.ReturnType, methodSig);
+ // put the custom attribute back, so that we can reference it
+ // at runtime for LoadExtension
+ mb.SetCustomAttribute (CreateGLExtCAB (ogl.ExtensionName, ogl.EntryPoint));
+ // now build the IL
+ string fieldname = "ext__" + ogl.ExtensionName + "__" + ogl.EntryPoint;
+#if WIN32
+ FieldInfo addrfield = field_hash[fieldname] as FieldInfo;
+#else
+ FieldInfo addrfield = glbuilder.GetField(fieldname,
+ BindingFlags.Instance |
+ BindingFlags.Static |
+ BindingFlags.Public |
+ BindingFlags.NonPublic |
+ BindingFlags.DeclaredOnly);
+#endif
+
+ ILGenerator ilg = mb.GetILGenerator();
+ {
+ int numargs = methodSig.Length;
+ for (int i = 0; i < numargs; i++) {
+ switch (i) {
+ case 0: ilg.Emit(OpCodes.Ldarg_0); break;
+ case 1: ilg.Emit(OpCodes.Ldarg_1); break;
+ case 2: ilg.Emit(OpCodes.Ldarg_2); break;
+ case 3: ilg.Emit(OpCodes.Ldarg_3); break;
+ default:ilg.Emit(OpCodes.Ldarg_S, i); break;
+ }
+ }
+ ilg.Emit(OpCodes.Ldsfld, addrfield);
+ ilg.EmitCalli(OpCodes.Calli, GL_NATIVE_CALLCONV, mi.ReturnType, methodSig);
+ }
+ ilg.Emit(OpCodes.Ret);
+ } else {
+ // this is a normal method
+ // this shouldn't happen
+ Console.WriteLine ("WARNING: Skipping non-DLL and non-Ogl method " + mi.Name);
+ }
+
+ continue;
+ }
+ }
+
+ glbuilder.CreateType();
+ mbuilder.CreateGlobalFunctions();
+
+ abuilder.Save(outName);
+ }
+
+ static CustomAttributeBuilder CreateGLExtCAB (string extname, string procname) {
+ Type [] ctorParams = new Type [] { typeof(string), typeof(string) };
+ ConstructorInfo classCtorInfo = typeof(Tsunami.Bindings.OpenGLExtensionImport).GetConstructor (ctorParams);
+ CustomAttributeBuilder cab = new CustomAttributeBuilder (classCtorInfo,
+ new object [] { extname, procname } );
+ return cab;
+ }
+}
44 gl_preamble.cs
@@ -0,0 +1,44 @@
+//
+// Tsunami.Bindings.Gl
+//
+// Copyright (c) 2004 Vladimir Vukicevic <vladimir@pobox.com>
+//
+// Tsunami.Bindings code and DLLs are licensed under the MIT/X11
+// license. Please see the file MIT.X11 for more information.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+using GLenum = System.UInt32;
+using GLboolean = System.Boolean;
+using GLbitfield = System.UInt32;
+using GLbyte = System.Byte;
+using GLubyte = System.Byte;
+using GLshort = System.Int16;
+using GLushort = System.UInt16;
+using GLint = System.Int32;
+using GLuint = System.UInt32;
+using GLsizei = System.Int32;
+using GLfloat = System.Single;
+using GLclampf = System.Single;
+using GLdouble = System.Double;
+using GLclampd = System.Double;
+
+//using GLsizeiptr = System.IntPtr;
+//using GLintptr = System.IntPtr;
+//using GLsizeiptrARB = System.IntPtr;
+//using GLintptrARB = System.IntPtr;
+using GLsizeiptr = System.UInt32;
+using GLintptr = System.UInt32;
+using GLsizeiptrARB = System.UInt32;
+using GLintptrARB = System.UInt32;
+using GLhalf = System.UInt16;
+using GLchar = System.Byte;
+using GLcharARB = System.Byte;
+using GLhandle = System.Int32;
+using GLhandleARB = System.Int32;
+
+namespace Tsunami.Bindings {
+
+ public sealed class Gl {
2 glcore/GLX_VERSION_1_2
@@ -0,0 +1,2 @@
+GLX_VERSION_1_2
+ Display* glXGetCurrentDisplay (void)
80 glcore/GLX_VERSION_1_3
@@ -0,0 +1,80 @@
+GLX_VERSION_1_3
+ GLX_WINDOW_BIT 0x00000001
+ GLX_PIXMAP_BIT 0x00000002
+ GLX_PBUFFER_BIT 0x00000004
+ GLX_RGBA_BIT 0x00000001
+ GLX_COLOR_INDEX_BIT 0x00000002
+ GLX_PBUFFER_CLOBBER_MASK 0x08000000
+ GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
+ GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
+ GLX_BACK_LEFT_BUFFER_BIT 0x00000004
+ GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
+ GLX_AUX_BUFFERS_BIT 0x00000010
+ GLX_DEPTH_BUFFER_BIT 0x00000020
+ GLX_STENCIL_BUFFER_BIT 0x00000040
+ GLX_ACCUM_BUFFER_BIT 0x00000080
+ GLX_CONFIG_CAVEAT 0x20
+ GLX_X_VISUAL_TYPE 0x22
+ GLX_TRANSPARENT_TYPE 0x23
+ GLX_TRANSPARENT_INDEX_VALUE 0x24
+ GLX_TRANSPARENT_RED_VALUE 0x25
+ GLX_TRANSPARENT_GREEN_VALUE 0x26
+ GLX_TRANSPARENT_BLUE_VALUE 0x27
+ GLX_TRANSPARENT_ALPHA_VALUE 0x28
+ GLX_DONT_CARE 0xFFFFFFFF
+ GLX_NONE 0x8000
+ GLX_SLOW_CONFIG 0x8001
+ GLX_TRUE_COLOR 0x8002
+ GLX_DIRECT_COLOR 0x8003
+ GLX_PSEUDO_COLOR 0x8004
+ GLX_STATIC_COLOR 0x8005
+ GLX_GRAY_SCALE 0x8006
+ GLX_STATIC_GRAY 0x8007
+ GLX_TRANSPARENT_RGB 0x8008
+ GLX_TRANSPARENT_INDEX 0x8009
+ GLX_VISUAL_ID 0x800B
+ GLX_SCREEN 0x800C
+ GLX_NON_CONFORMANT_CONFIG 0x800D
+ GLX_DRAWABLE_TYPE 0x8010
+ GLX_RENDER_TYPE 0x8011
+ GLX_X_RENDERABLE 0x8012
+ GLX_FBCONFIG_ID 0x8013
+ GLX_RGBA_TYPE 0x8014
+ GLX_COLOR_INDEX_TYPE 0x8015
+ GLX_MAX_PBUFFER_WIDTH 0x8016
+ GLX_MAX_PBUFFER_HEIGHT 0x8017
+ GLX_MAX_PBUFFER_PIXELS 0x8018
+ GLX_PRESERVED_CONTENTS 0x801B
+ GLX_LARGEST_PBUFFER 0x801C
+ GLX_WIDTH 0x801D
+ GLX_HEIGHT 0x801E
+ GLX_EVENT_MASK 0x801F
+ GLX_DAMAGED 0x8020
+ GLX_SAVED 0x8021
+ GLX_WINDOW 0x8022
+ GLX_PBUFFER 0x8023
+ GLX_PBUFFER_HEIGHT 0x8040
+ GLX_PBUFFER_WIDTH 0x8041
+ GLXFBConfig* glXChooseFBConfig (Display *dpy, int screen, const int *attrib_list, int *nelements)
+ GLXFBConfig* glXGetFBConfigs (Display *dpy, int screen, int *nelements)
+ XVisualInfo* glXGetVisualFromFBConfig (Display *dpy, GLXFBConfig config)
+ int glXGetFBConfigAttrib (Display *dpy, GLXFBConfig config, int attribute, int *value)
+ GLXWindow glXCreateWindow (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list)
+ void glXDestroyWindow (Display *dpy, GLXWindow win)
+ GLXPixmap glXCreatePixmap (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list)
+ void glXDestroyPixmap (Display *dpy, GLXPixmap pixmap)
+ GLXPbuffer glXCreatePbuffer (Display *dpy, GLXFBConfig config, const int *attrib_list)
+ void glXDestroyPbuffer (Display *dpy, GLXPbuffer pbuf)
+ void glXQueryDrawable (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value)
+ GLXContext glXCreateNewContext (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct)
+ Bool glXMakeContextCurrent (Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx)
+ GLXDrawable glXGetCurrentReadDrawable (void)
+ int glXQueryContext (Display *dpy, GLXContext ctx, int attribute, int *value)
+ void glXSelectEvent (Display *dpy, GLXDrawable draw, unsigned long event_mask)
+ void glXGetSelectedEvent (Display *dpy, GLXDrawable draw, unsigned long *event_mask)
+ typedef XID GLXWindow
+ typedef XID GLXPbuffer
+ typedef XID GLXFBConfigID
+ typedef struct __GLXFBConfigRec *GLXFBConfig
+ typedef struct { int event_type; int draw_type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; unsigned int buffer_mask; unsigned int aux_buffer; int x, y; int width, height; int count; } GLXPbufferClobberEvent
+ typedef union __GLXEvent { GLXPbufferClobberEvent glxpbufferclobber; long pad[24]; } GLXEvent
4 glcore/GLX_VERSION_1_4
@@ -0,0 +1,4 @@
+GLX_VERSION_1_4
+ GLX_SAMPLE_BUFFERS 100000
+ GLX_SAMPLES 100001
+ extern void ( * glXGetProcAddress (const GLubyte *procName)) (void);
1,021 glcore/GL_VERSION_1_1
@@ -0,0 +1,1021 @@
+GL_VERSION_1_1
+ GL_ACCUM 0x0100
+ GL_LOAD 0x0101
+ GL_RETURN 0x0102
+ GL_MULT 0x0103
+ GL_ADD 0x0104
+ GL_NEVER 0x0200
+ GL_LESS 0x0201
+ GL_EQUAL 0x0202
+ GL_LEQUAL 0x0203
+ GL_GREATER 0x0204
+ GL_NOTEQUAL 0x0205
+ GL_GEQUAL 0x0206
+ GL_ALWAYS 0x0207
+ GL_CURRENT_BIT 0x00000001
+ GL_POINT_BIT 0x00000002
+ GL_LINE_BIT 0x00000004
+ GL_POLYGON_BIT 0x00000008
+ GL_POLYGON_STIPPLE_BIT 0x00000010
+ GL_PIXEL_MODE_BIT 0x00000020
+ GL_LIGHTING_BIT 0x00000040
+ GL_FOG_BIT 0x00000080
+ GL_DEPTH_BUFFER_BIT 0x00000100
+ GL_ACCUM_BUFFER_BIT 0x00000200
+ GL_STENCIL_BUFFER_BIT 0x00000400
+ GL_VIEWPORT_BIT 0x00000800
+ GL_TRANSFORM_BIT 0x00001000
+ GL_ENABLE_BIT 0x00002000
+ GL_COLOR_BUFFER_BIT 0x00004000
+ GL_HINT_BIT 0x00008000
+ GL_EVAL_BIT 0x00010000
+ GL_LIST_BIT 0x00020000
+ GL_TEXTURE_BIT 0x00040000
+ GL_SCISSOR_BIT 0x00080000
+ GL_ALL_ATTRIB_BITS 0x000fffff
+ GL_POINTS 0x0000
+ GL_LINES 0x0001
+ GL_LINE_LOOP 0x0002
+ GL_LINE_STRIP 0x0003
+ GL_TRIANGLES 0x0004
+ GL_TRIANGLE_STRIP 0x0005
+ GL_TRIANGLE_FAN 0x0006
+ GL_QUADS 0x0007
+ GL_QUAD_STRIP 0x0008
+ GL_POLYGON 0x0009
+ GL_ZERO 0
+ GL_ONE 1
+ GL_SRC_COLOR 0x0300
+ GL_ONE_MINUS_SRC_COLOR 0x0301
+ GL_SRC_ALPHA 0x0302
+ GL_ONE_MINUS_SRC_ALPHA 0x0303
+ GL_DST_ALPHA 0x0304
+ GL_ONE_MINUS_DST_ALPHA 0x0305
+ GL_DST_COLOR 0x0306
+ GL_ONE_MINUS_DST_COLOR 0x0307
+ GL_SRC_ALPHA_SATURATE 0x0308
+ GL_TRUE 1
+ GL_FALSE 0
+ GL_CLIP_PLANE0 0x3000
+ GL_CLIP_PLANE1 0x3001
+ GL_CLIP_PLANE2 0x3002
+ GL_CLIP_PLANE3 0x3003
+ GL_CLIP_PLANE4 0x3004
+ GL_CLIP_PLANE5 0x3005
+ GL_BYTE 0x1400
+ GL_UNSIGNED_BYTE 0x1401
+ GL_SHORT 0x1402
+ GL_UNSIGNED_SHORT 0x1403
+ GL_INT 0x1404
+ GL_UNSIGNED_INT 0x1405
+ GL_FLOAT 0x1406
+ GL_2_BYTES 0x1407
+ GL_3_BYTES 0x1408
+ GL_4_BYTES 0x1409
+ GL_DOUBLE 0x140A
+ GL_NONE 0
+ GL_FRONT_LEFT 0x0400
+ GL_FRONT_RIGHT 0x0401
+ GL_BACK_LEFT 0x0402
+ GL_BACK_RIGHT 0x0403
+ GL_FRONT 0x0404
+ GL_BACK 0x0405
+ GL_LEFT 0x0406
+ GL_RIGHT 0x0407
+ GL_FRONT_AND_BACK 0x0408
+ GL_AUX0 0x0409
+ GL_AUX1 0x040A
+ GL_AUX2 0x040B
+ GL_AUX3 0x040C
+ GL_NO_ERROR 0
+ GL_INVALID_ENUM 0x0500
+ GL_INVALID_VALUE 0x0501
+ GL_INVALID_OPERATION 0x0502
+ GL_STACK_OVERFLOW 0x0503
+ GL_STACK_UNDERFLOW 0x0504
+ GL_OUT_OF_MEMORY 0x0505
+ GL_2D 0x0600
+ GL_3D 0x0601
+ GL_3D_COLOR 0x0602
+ GL_3D_COLOR_TEXTURE 0x0603
+ GL_4D_COLOR_TEXTURE 0x0604
+ GL_PASS_THROUGH_TOKEN 0x0700
+ GL_POINT_TOKEN 0x0701
+ GL_LINE_TOKEN 0x0702
+ GL_POLYGON_TOKEN 0x0703
+ GL_BITMAP_TOKEN 0x0704
+ GL_DRAW_PIXEL_TOKEN 0x0705
+ GL_COPY_PIXEL_TOKEN 0x0706
+ GL_LINE_RESET_TOKEN 0x0707
+ GL_EXP 0x0800
+ GL_EXP2 0x0801
+ GL_CW 0x0900
+ GL_CCW 0x0901
+ GL_COEFF 0x0A00
+ GL_ORDER 0x0A01
+ GL_DOMAIN 0x0A02
+ GL_CURRENT_COLOR 0x0B00
+ GL_CURRENT_INDEX 0x0B01
+ GL_CURRENT_NORMAL 0x0B02
+ GL_CURRENT_TEXTURE_COORDS 0x0B03
+ GL_CURRENT_RASTER_COLOR 0x0B04
+ GL_CURRENT_RASTER_INDEX 0x0B05
+ GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06
+ GL_CURRENT_RASTER_POSITION 0x0B07
+ GL_CURRENT_RASTER_POSITION_VALID 0x0B08
+ GL_CURRENT_RASTER_DISTANCE 0x0B09
+ GL_POINT_SMOOTH 0x0B10
+ GL_POINT_SIZE 0x0B11
+ GL_POINT_SIZE_RANGE 0x0B12
+ GL_POINT_SIZE_GRANULARITY 0x0B13
+ GL_LINE_SMOOTH 0x0B20
+ GL_LINE_WIDTH 0x0B21
+ GL_LINE_WIDTH_RANGE 0x0B22
+ GL_LINE_WIDTH_GRANULARITY 0x0B23
+ GL_LINE_STIPPLE 0x0B24
+ GL_LINE_STIPPLE_PATTERN 0x0B25
+ GL_LINE_STIPPLE_REPEAT 0x0B26
+ GL_LIST_MODE 0x0B30
+ GL_MAX_LIST_NESTING 0x0B31
+ GL_LIST_BASE 0x0B32
+ GL_LIST_INDEX 0x0B33
+ GL_POLYGON_MODE 0x0B40
+ GL_POLYGON_SMOOTH 0x0B41
+ GL_POLYGON_STIPPLE 0x0B42
+ GL_EDGE_FLAG 0x0B43
+ GL_CULL_FACE 0x0B44
+ GL_CULL_FACE_MODE 0x0B45
+ GL_FRONT_FACE 0x0B46
+ GL_LIGHTING 0x0B50
+ GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51
+ GL_LIGHT_MODEL_TWO_SIDE 0x0B52
+ GL_LIGHT_MODEL_AMBIENT 0x0B53
+ GL_SHADE_MODEL 0x0B54
+ GL_COLOR_MATERIAL_FACE 0x0B55
+ GL_COLOR_MATERIAL_PARAMETER 0x0B56
+ GL_COLOR_MATERIAL 0x0B57
+ GL_FOG 0x0B60
+ GL_FOG_INDEX 0x0B61
+ GL_FOG_DENSITY 0x0B62
+ GL_FOG_START 0x0B63
+ GL_FOG_END 0x0B64
+ GL_FOG_MODE 0x0B65
+ GL_FOG_COLOR 0x0B66
+ GL_DEPTH_RANGE 0x0B70
+ GL_DEPTH_TEST 0x0B71
+ GL_DEPTH_WRITEMASK 0x0B72
+ GL_DEPTH_CLEAR_VALUE 0x0B73
+ GL_DEPTH_FUNC 0x0B74
+ GL_ACCUM_CLEAR_VALUE 0x0B80
+ GL_STENCIL_TEST 0x0B90
+ GL_STENCIL_CLEAR_VALUE 0x0B91
+ GL_STENCIL_FUNC 0x0B92
+ GL_STENCIL_VALUE_MASK 0x0B93
+ GL_STENCIL_FAIL 0x0B94
+ GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
+ GL_STENCIL_PASS_DEPTH_PASS 0x0B96
+ GL_STENCIL_REF 0x0B97
+ GL_STENCIL_WRITEMASK 0x0B98
+ GL_MATRIX_MODE 0x0BA0
+ GL_NORMALIZE 0x0BA1
+ GL_VIEWPORT 0x0BA2
+ GL_MODELVIEW_STACK_DEPTH 0x0BA3
+ GL_PROJECTION_STACK_DEPTH 0x0BA4
+ GL_TEXTURE_STACK_DEPTH 0x0BA5
+ GL_MODELVIEW_MATRIX 0x0BA6
+ GL_PROJECTION_MATRIX 0x0BA7
+ GL_TEXTURE_MATRIX 0x0BA8
+ GL_ATTRIB_STACK_DEPTH 0x0BB0
+ GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1
+ GL_ALPHA_TEST 0x0BC0
+ GL_ALPHA_TEST_FUNC 0x0BC1
+ GL_ALPHA_TEST_REF 0x0BC2
+ GL_DITHER 0x0BD0
+ GL_BLEND_DST 0x0BE0
+ GL_BLEND_SRC 0x0BE1
+ GL_BLEND 0x0BE2
+ GL_LOGIC_OP_MODE 0x0BF0
+ GL_INDEX_LOGIC_OP 0x0BF1
+ GL_COLOR_LOGIC_OP 0x0BF2
+ GL_AUX_BUFFERS 0x0C00
+ GL_DRAW_BUFFER 0x0C01
+ GL_READ_BUFFER 0x0C02
+ GL_SCISSOR_BOX 0x0C10
+ GL_SCISSOR_TEST 0x0C11
+ GL_INDEX_CLEAR_VALUE 0x0C20
+ GL_INDEX_WRITEMASK 0x0C21
+ GL_COLOR_CLEAR_VALUE 0x0C22
+ GL_COLOR_WRITEMASK 0x0C23
+ GL_INDEX_MODE 0x0C30
+ GL_RGBA_MODE 0x0C31
+ GL_DOUBLEBUFFER 0x0C32
+ GL_STEREO 0x0C33
+ GL_RENDER_MODE 0x0C40
+ GL_PERSPECTIVE_CORRECTION_HINT 0x0C50
+ GL_POINT_SMOOTH_HINT 0x0C51
+ GL_LINE_SMOOTH_HINT 0x0C52
+ GL_POLYGON_SMOOTH_HINT 0x0C53
+ GL_FOG_HINT 0x0C54
+ GL_TEXTURE_GEN_S 0x0C60
+ GL_TEXTURE_GEN_T 0x0C61
+ GL_TEXTURE_GEN_R 0x0C62
+ GL_TEXTURE_GEN_Q 0x0C63
+ GL_PIXEL_MAP_I_TO_I 0x0C70
+ GL_PIXEL_MAP_S_TO_S 0x0C71
+ GL_PIXEL_MAP_I_TO_R 0x0C72
+ GL_PIXEL_MAP_I_TO_G 0x0C73
+ GL_PIXEL_MAP_I_TO_B 0x0C74
+ GL_PIXEL_MAP_I_TO_A 0x0C75
+ GL_PIXEL_MAP_R_TO_R 0x0C76
+ GL_PIXEL_MAP_G_TO_G 0x0C77
+ GL_PIXEL_MAP_B_TO_B 0x0C78
+ GL_PIXEL_MAP_A_TO_A 0x0C79
+ GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0
+ GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1
+ GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2
+ GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3
+ GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4
+ GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5
+ GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6
+ GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7
+ GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8
+ GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9
+ GL_UNPACK_SWAP_BYTES 0x0CF0
+ GL_UNPACK_LSB_FIRST 0x0CF1
+ GL_UNPACK_ROW_LENGTH 0x0CF2
+ GL_UNPACK_SKIP_ROWS 0x0CF3
+ GL_UNPACK_SKIP_PIXELS 0x0CF4
+ GL_UNPACK_ALIGNMENT 0x0CF5
+ GL_PACK_SWAP_BYTES 0x0D00
+ GL_PACK_LSB_FIRST 0x0D01
+ GL_PACK_ROW_LENGTH 0x0D02
+ GL_PACK_SKIP_ROWS 0x0D03
+ GL_PACK_SKIP_PIXELS 0x0D04
+ GL_PACK_ALIGNMENT 0x0D05
+ GL_MAP_COLOR 0x0D10
+ GL_MAP_STENCIL 0x0D11
+ GL_INDEX_SHIFT 0x0D12
+ GL_INDEX_OFFSET 0x0D13
+ GL_RED_SCALE 0x0D14
+ GL_RED_BIAS 0x0D15
+ GL_ZOOM_X 0x0D16
+ GL_ZOOM_Y 0x0D17
+ GL_GREEN_SCALE 0x0D18
+ GL_GREEN_BIAS 0x0D19
+ GL_BLUE_SCALE 0x0D1A
+ GL_BLUE_BIAS 0x0D1B
+ GL_ALPHA_SCALE 0x0D1C
+ GL_ALPHA_BIAS 0x0D1D
+ GL_DEPTH_SCALE 0x0D1E
+ GL_DEPTH_BIAS 0x0D1F
+ GL_MAX_EVAL_ORDER 0x0D30
+ GL_MAX_LIGHTS 0x0D31
+ GL_MAX_CLIP_PLANES 0x0D32
+ GL_MAX_TEXTURE_SIZE 0x0D33
+ GL_MAX_PIXEL_MAP_TABLE 0x0D34
+ GL_MAX_ATTRIB_STACK_DEPTH 0x0D35
+ GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36
+ GL_MAX_NAME_STACK_DEPTH 0x0D37
+ GL_MAX_PROJECTION_STACK_DEPTH 0x0D38
+ GL_MAX_TEXTURE_STACK_DEPTH 0x0D39
+ GL_MAX_VIEWPORT_DIMS 0x0D3A
+ GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B
+ GL_SUBPIXEL_BITS 0x0D50
+ GL_INDEX_BITS 0x0D51
+ GL_RED_BITS 0x0D52
+ GL_GREEN_BITS 0x0D53
+ GL_BLUE_BITS 0x0D54
+ GL_ALPHA_BITS 0x0D55
+ GL_DEPTH_BITS 0x0D56
+ GL_STENCIL_BITS 0x0D57
+ GL_ACCUM_RED_BITS 0x0D58
+ GL_ACCUM_GREEN_BITS 0x0D59
+ GL_ACCUM_BLUE_BITS 0x0D5A
+ GL_ACCUM_ALPHA_BITS 0x0D5B
+ GL_NAME_STACK_DEPTH 0x0D70
+ GL_AUTO_NORMAL 0x0D80
+ GL_MAP1_COLOR_4 0x0D90
+ GL_MAP1_INDEX 0x0D91
+ GL_MAP1_NORMAL 0x0D92
+ GL_MAP1_TEXTURE_COORD_1 0x0D93
+ GL_MAP1_TEXTURE_COORD_2 0x0D94
+ GL_MAP1_TEXTURE_COORD_3 0x0D95
+ GL_MAP1_TEXTURE_COORD_4 0x0D96
+ GL_MAP1_VERTEX_3 0x0D97
+ GL_MAP1_VERTEX_4 0x0D98
+ GL_MAP2_COLOR_4 0x0DB0
+ GL_MAP2_INDEX 0x0DB1
+ GL_MAP2_NORMAL 0x0DB2
+ GL_MAP2_TEXTURE_COORD_1 0x0DB3
+ GL_MAP2_TEXTURE_COORD_2 0x0DB4
+ GL_MAP2_TEXTURE_COORD_3 0x0DB5
+ GL_MAP2_TEXTURE_COORD_4 0x0DB6
+ GL_MAP2_VERTEX_3 0x0DB7
+ GL_MAP2_VERTEX_4 0x0DB8
+ GL_MAP1_GRID_DOMAIN 0x0DD0
+ GL_MAP1_GRID_SEGMENTS 0x0DD1
+ GL_MAP2_GRID_DOMAIN 0x0DD2
+ GL_MAP2_GRID_SEGMENTS 0x0DD3
+ GL_TEXTURE_1D 0x0DE0
+ GL_TEXTURE_2D 0x0DE1
+ GL_FEEDBACK_BUFFER_POINTER 0x0DF0
+ GL_FEEDBACK_BUFFER_SIZE 0x0DF1
+ GL_FEEDBACK_BUFFER_TYPE 0x0DF2
+ GL_SELECTION_BUFFER_POINTER 0x0DF3
+ GL_SELECTION_BUFFER_SIZE 0x0DF4
+ GL_TEXTURE_WIDTH 0x1000
+ GL_TEXTURE_HEIGHT 0x1001
+ GL_TEXTURE_INTERNAL_FORMAT 0x1003
+ GL_TEXTURE_BORDER_COLOR 0x1004
+ GL_TEXTURE_BORDER 0x1005
+ GL_DONT_CARE 0x1100
+ GL_FASTEST 0x1101
+ GL_NICEST 0x1102
+ GL_LIGHT0 0x4000
+ GL_LIGHT1 0x4001
+ GL_LIGHT2 0x4002
+ GL_LIGHT3 0x4003
+ GL_LIGHT4 0x4004
+ GL_LIGHT5 0x4005
+ GL_LIGHT6 0x4006
+ GL_LIGHT7 0x4007
+ GL_AMBIENT 0x1200
+ GL_DIFFUSE 0x1201
+ GL_SPECULAR 0x1202
+ GL_POSITION 0x1203
+ GL_SPOT_DIRECTION 0x1204
+ GL_SPOT_EXPONENT 0x1205
+ GL_SPOT_CUTOFF 0x1206
+ GL_CONSTANT_ATTENUATION 0x1207
+ GL_LINEAR_ATTENUATION 0x1208
+ GL_QUADRATIC_ATTENUATION 0x1209
+ GL_COMPILE 0x1300
+ GL_COMPILE_AND_EXECUTE 0x1301
+ GL_CLEAR 0x1500
+ GL_AND 0x1501
+ GL_AND_REVERSE 0x1502
+ GL_COPY 0x1503
+ GL_AND_INVERTED 0x1504
+ GL_NOOP 0x1505
+ GL_XOR 0x1506
+ GL_OR 0x1507
+ GL_NOR 0x1508
+ GL_EQUIV 0x1509
+ GL_INVERT 0x150A
+ GL_OR_REVERSE 0x150B
+ GL_COPY_INVERTED 0x150C
+ GL_OR_INVERTED 0x150D
+ GL_NAND 0x150E
+ GL_SET 0x150F
+ GL_EMISSION 0x1600
+ GL_SHININESS 0x1601
+ GL_AMBIENT_AND_DIFFUSE 0x1602
+ GL_COLOR_INDEXES 0x1603
+ GL_MODELVIEW 0x1700
+ GL_PROJECTION 0x1701
+ GL_TEXTURE 0x1702
+ GL_COLOR 0x1800
+ GL_DEPTH 0x1801
+ GL_STENCIL 0x1802
+ GL_COLOR_INDEX 0x1900
+ GL_STENCIL_INDEX 0x1901
+ GL_DEPTH_COMPONENT 0x1902
+ GL_RED 0x1903
+ GL_GREEN 0x1904
+ GL_BLUE 0x1905
+ GL_ALPHA 0x1906
+ GL_RGB 0x1907
+ GL_RGBA 0x1908
+ GL_LUMINANCE 0x1909
+ GL_LUMINANCE_ALPHA 0x190A
+ GL_BITMAP 0x1A00
+ GL_POINT 0x1B00
+ GL_LINE 0x1B01
+ GL_FILL 0x1B02
+ GL_RENDER 0x1C00
+ GL_FEEDBACK 0x1C01
+ GL_SELECT 0x1C02
+ GL_FLAT 0x1D00
+ GL_SMOOTH 0x1D01
+ GL_KEEP 0x1E00
+ GL_REPLACE 0x1E01
+ GL_INCR 0x1E02
+ GL_DECR 0x1E03
+ GL_VENDOR 0x1F00
+ GL_RENDERER 0x1F01
+ GL_VERSION 0x1F02
+ GL_EXTENSIONS 0x1F03
+ GL_S 0x2000
+ GL_T 0x2001
+ GL_R 0x2002
+ GL_Q 0x2003
+ GL_MODULATE 0x2100
+ GL_DECAL 0x2101
+ GL_TEXTURE_ENV_MODE 0x2200
+ GL_TEXTURE_ENV_COLOR 0x2201
+ GL_TEXTURE_ENV 0x2300
+ GL_EYE_LINEAR 0x2400
+ GL_OBJECT_LINEAR 0x2401
+ GL_SPHERE_MAP 0x2402
+ GL_TEXTURE_GEN_MODE 0x2500
+ GL_OBJECT_PLANE 0x2501
+ GL_EYE_PLANE 0x2502
+ GL_NEAREST 0x2600
+ GL_LINEAR 0x2601
+ GL_NEAREST_MIPMAP_NEAREST 0x2700
+ GL_LINEAR_MIPMAP_NEAREST 0x2701
+ GL_NEAREST_MIPMAP_LINEAR 0x2702
+ GL_LINEAR_MIPMAP_LINEAR 0x2703
+ GL_TEXTURE_MAG_FILTER 0x2800
+ GL_TEXTURE_MIN_FILTER 0x2801
+ GL_TEXTURE_WRAP_S 0x2802
+ GL_TEXTURE_WRAP_T 0x2803
+ GL_CLAMP 0x2900
+ GL_REPEAT 0x2901
+ GL_CLIENT_PIXEL_STORE_BIT 0x00000001
+ GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
+ GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff
+ GL_POLYGON_OFFSET_FACTOR 0x8038
+ GL_POLYGON_OFFSET_UNITS 0x2A00
+ GL_POLYGON_OFFSET_POINT 0x2A01
+ GL_POLYGON_OFFSET_LINE 0x2A02
+ GL_POLYGON_OFFSET_FILL 0x8037
+ GL_ALPHA4 0x803B
+ GL_ALPHA8 0x803C
+ GL_ALPHA12 0x803D
+ GL_ALPHA16 0x803E
+ GL_LUMINANCE4 0x803F
+ GL_LUMINANCE8 0x8040
+ GL_LUMINANCE12 0x8041
+ GL_LUMINANCE16 0x8042
+ GL_LUMINANCE4_ALPHA4 0x8043
+ GL_LUMINANCE6_ALPHA2 0x8044
+ GL_LUMINANCE8_ALPHA8 0x8045
+ GL_LUMINANCE12_ALPHA4 0x8046
+ GL_LUMINANCE12_ALPHA12 0x8047
+ GL_LUMINANCE16_ALPHA16 0x8048
+ GL_INTENSITY 0x8049
+ GL_INTENSITY4 0x804A
+ GL_INTENSITY8 0x804B
+ GL_INTENSITY12 0x804C
+ GL_INTENSITY16 0x804D
+ GL_R3_G3_B2 0x2A10
+ GL_RGB4 0x804F
+ GL_RGB5 0x8050
+ GL_RGB8 0x8051
+ GL_RGB10 0x8052
+ GL_RGB12 0x8053
+ GL_RGB16 0x8054
+ GL_RGBA2 0x8055
+ GL_RGBA4 0x8056
+ GL_RGB5_A1 0x8057
+ GL_RGBA8 0x8058
+ GL_RGB10_A2 0x8059
+ GL_RGBA12 0x805A
+ GL_RGBA16 0x805B