Visualization Library 2.0.0

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
vlnamespace.hpp
Go to the documentation of this file.
1 /**************************************************************************************/
2 /* */
3 /* Visualization Library */
4 /* http://visualizationlibrary.org */
5 /* */
6 /* Copyright (c) 2005-2020, Michele Bosi */
7 /* All rights reserved. */
8 /* */
9 /* Redistribution and use in source and binary forms, with or without modification, */
10 /* are permitted provided that the following conditions are met: */
11 /* */
12 /* - Redistributions of source code must retain the above copyright notice, this */
13 /* list of conditions and the following disclaimer. */
14 /* */
15 /* - Redistributions in binary form must reproduce the above copyright notice, this */
16 /* list of conditions and the following disclaimer in the documentation and/or */
17 /* other materials provided with the distribution. */
18 /* */
19 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND */
20 /* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED */
21 /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
22 /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR */
23 /* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
24 /* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */
25 /* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
26 /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
27 /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
28 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
29 /* */
30 /**************************************************************************************/
31 
37 #ifndef vlnamespace_INCLUDE_ONCE
38 #define vlnamespace_INCLUDE_ONCE
39 
40 #include <vlCore/OpenGLDefs.hpp>
41 #include <vlCore/config.hpp>
42 
43 namespace vl
44 {
45  typedef enum
46  {
48 
49  TF_ALPHA = GL_ALPHA,
50  TF_ALPHA4 = GL_ALPHA4,
51  TF_ALPHA8 = GL_ALPHA8,
52  TF_ALPHA12 = GL_ALPHA12,
53  TF_ALPHA16 = GL_ALPHA16,
54 
55  TF_INTENSITY = GL_INTENSITY,
56  TF_INTENSITY4 = GL_INTENSITY4,
57  TF_INTENSITY8 = GL_INTENSITY8,
58  TF_INTENSITY12 = GL_INTENSITY12,
59  TF_INTENSITY16 = GL_INTENSITY16,
60  TF_LUMINANCE = GL_LUMINANCE,
61  TF_LUMINANCE4 = GL_LUMINANCE4,
62  TF_LUMINANCE8 = GL_LUMINANCE8,
63  TF_LUMINANCE12 = GL_LUMINANCE12,
64  TF_LUMINANCE16 = GL_LUMINANCE16,
65  TF_LUMINANCE_ALPHA = GL_LUMINANCE_ALPHA,
66  TF_LUMINANCE4_ALPHA4 = GL_LUMINANCE4_ALPHA4,
67  TF_LUMINANCE6_ALPHA2 = GL_LUMINANCE6_ALPHA2,
68  TF_LUMINANCE8_ALPHA8 = GL_LUMINANCE8_ALPHA8,
69  TF_LUMINANCE12_ALPHA4 = GL_LUMINANCE12_ALPHA4,
70  TF_LUMINANCE12_ALPHA12 = GL_LUMINANCE12_ALPHA12,
71  TF_LUMINANCE16_ALPHA16 = GL_LUMINANCE16_ALPHA16,
72  TF_R3_G3_B2 = GL_R3_G3_B2,
73  TF_RGB = GL_RGB,
74  TF_RGB4 = GL_RGB4,
75  TF_RGB5 = GL_RGB5,
76  TF_RGB8 = GL_RGB8,
77  TF_RGB10 = GL_RGB10,
78  TF_RGB12 = GL_RGB12,
79  TF_RGB16 = GL_RGB16,
80  TF_RGBA = GL_RGBA,
81  TF_RGBA2 = GL_RGBA2,
82  TF_RGBA4 = GL_RGBA4,
83  TF_RGB5_A1 = GL_RGB5_A1,
84  TF_RGBA8 = GL_RGBA8,
85  TF_RGB10_A2 = GL_RGB10_A2,
86  TF_RGBA12 = GL_RGBA12,
87  TF_RGBA16 = GL_RGBA16,
88 
89  // ARB_texture_float / OpenGL 3
90  TF_RGBA32F = GL_RGBA32F,
91  TF_RGB32F = GL_RGB32F,
92  TF_ALPHA32F = GL_ALPHA32F_ARB,
93  TF_INTENSITY32F = GL_INTENSITY32F_ARB,
94  TF_LUMINANCE32F = GL_LUMINANCE32F_ARB,
95  TF_LUMINANCE_ALPHA32F = GL_LUMINANCE_ALPHA32F_ARB,
96  TF_RGBA16F = GL_RGBA16F,
97  TF_RGB16F = GL_RGB16F,
98  TF_ALPHA16F = GL_ALPHA16F_ARB,
99  TF_INTENSITY16F = GL_INTENSITY16F_ARB,
100  TF_LUMINANCE16F = GL_LUMINANCE16F_ARB,
101  TF_LUMINANCE_ALPHA16F = GL_LUMINANCE_ALPHA16F_ARB,
102 
103  // ATI_texture_float (the enums are the same as ARB_texture_float)
104  TF_RGBA_FLOAT32_ATI = GL_RGBA_FLOAT32_ATI,
105  TF_RGB_FLOAT32_ATI = GL_RGB_FLOAT32_ATI,
106  TF_ALPHA_FLOAT32_ATI = GL_ALPHA_FLOAT32_ATI,
107  TF_INTENSITY_FLOAT32_ATI = GL_INTENSITY_FLOAT32_ATI,
108  TF_LUMINANCE_FLOAT32_ATI = GL_LUMINANCE_FLOAT32_ATI,
109  TF_LUMINANCE_ALPHA_FLOAT32_ATI = GL_LUMINANCE_ALPHA_FLOAT32_ATI,
110  TF_RGBA_FLOAT16_ATI = GL_RGBA_FLOAT16_ATI,
111  TF_RGB_FLOAT16_ATI = GL_RGB_FLOAT16_ATI,
112  TF_ALPHA_FLOAT16_ATI = GL_ALPHA_FLOAT16_ATI,
113  TF_INTENSITY_FLOAT16_ATI = GL_INTENSITY_FLOAT16_ATI,
114  TF_LUMINANCE_FLOAT16_ATI = GL_LUMINANCE_FLOAT16_ATI,
115  TF_LUMINANCE_ALPHA_FLOAT16_ATI = GL_LUMINANCE_ALPHA_FLOAT16_ATI,
116 
117  // EXT_texture_shared_exponent
118  TF_RGB9_E5_EXT = GL_RGB9_E5_EXT,
119 
120  // EXT_packed_float
121  TF_11F_G11F_B10F_EXT = GL_R11F_G11F_B10F_EXT,
122 
123  // EXT_packed_depth_stencil / GL_ARB_framebuffer_object
124  TF_DEPTH_STENCIL = GL_DEPTH_STENCIL,
125  TF_DEPTH24_STENCIL8 = GL_DEPTH24_STENCIL8,
126 
127  // ARB_depth_buffer_float
128  TF_DEPTH_COMPONENT32F = GL_DEPTH_COMPONENT32F,
129  TF_DEPTH32F_STENCIL8 = GL_DEPTH32F_STENCIL8,
130 
131  // ARB_depth_texture
132  TF_DEPTH_COMPONENT = GL_DEPTH_COMPONENT,
133  TF_DEPTH_COMPONENT16 = GL_DEPTH_COMPONENT16,
134  TF_DEPTH_COMPONENT24 = GL_DEPTH_COMPONENT24,
135  TF_DEPTH_COMPONENT32 = GL_DEPTH_COMPONENT32,
136 
137  // ARB_texture_compression
138  TF_COMPRESSED_ALPHA = GL_COMPRESSED_ALPHA_ARB,
139  TF_COMPRESSED_INTENSITY = GL_COMPRESSED_INTENSITY_ARB,
140  TF_COMPRESSED_LUMINANCE = GL_COMPRESSED_LUMINANCE_ARB,
141  TF_COMPRESSED_LUMINANCE_ALPHA = GL_COMPRESSED_LUMINANCE_ALPHA_ARB,
142  TF_COMPRESSED_RGB = GL_COMPRESSED_RGB_ARB,
143  TF_COMPRESSED_RGBA = GL_COMPRESSED_RGBA_ARB,
144 
145  // 3DFX_texture_compression_FXT1
146  TF_COMPRESSED_RGB_FXT1_3DFX = GL_COMPRESSED_RGB_FXT1_3DFX,
147  TF_COMPRESSED_RGBA_FXT1_3DFX = GL_COMPRESSED_RGBA_FXT1_3DFX,
148 
149  // EXT_texture_compression_s3tc
150  TF_COMPRESSED_RGB_S3TC_DXT1_EXT = GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
151  TF_COMPRESSED_RGBA_S3TC_DXT1_EXT = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,
152  TF_COMPRESSED_RGBA_S3TC_DXT3_EXT = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT,
153  TF_COMPRESSED_RGBA_S3TC_DXT5_EXT = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
154 
155  // EXT_texture_compression_latc
156  TF_COMPRESSED_LUMINANCE_LATC1_EXT = GL_COMPRESSED_LUMINANCE_LATC1_EXT,
157  TF_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT = GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT,
158  TF_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT = GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT,
159  TF_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT = GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT,
160 
161  // EXT_texture_compression_rgtc
162  TF_COMPRESSED_RED_RGTC1_EXT = GL_COMPRESSED_RED_RGTC1_EXT,
163  TF_COMPRESSED_SIGNED_RED_RGTC1_EXT = GL_COMPRESSED_SIGNED_RED_RGTC1_EXT,
164  TF_COMPRESSED_RED_GREEN_RGTC2_EXT = GL_COMPRESSED_RED_GREEN_RGTC2_EXT,
165  TF_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,
166 
167  // EXT_texture_integer
168  TF_RGBA32UI_EXT = GL_RGBA32UI_EXT,
169  TF_RGB32UI_EXT = GL_RGB32UI_EXT,
170  TF_ALPHA32UI_EXT = GL_ALPHA32UI_EXT,
171  TF_INTENSITY32UI_EXT = GL_INTENSITY32UI_EXT,
172  TF_LUMINANCE32UI_EXT = GL_LUMINANCE32UI_EXT,
173  TF_LUMINANCE_ALPHA32UI_EXT = GL_LUMINANCE_ALPHA32UI_EXT,
174 
175  TF_RGBA16UI_EXT = GL_RGBA16UI_EXT,
176  TF_RGB16UI_EXT = GL_RGB16UI_EXT,
177  TF_ALPHA16UI_EXT = GL_ALPHA16UI_EXT,
178  TF_INTENSITY16UI_EXT = GL_INTENSITY16UI_EXT,
179  TF_LUMINANCE16UI_EXT = GL_LUMINANCE16UI_EXT,
180  TF_LUMINANCE_ALPHA16UI_EXT = GL_LUMINANCE_ALPHA16UI_EXT,
181 
182  TF_RGBA8UI_EXT = GL_RGBA8UI_EXT,
183  TF_RGB8UI_EXT = GL_RGB8UI_EXT,
184  TF_ALPHA8UI_EXT = GL_ALPHA8UI_EXT,
185  TF_INTENSITY8UI_EXT = GL_INTENSITY8UI_EXT,
186  TF_LUMINANCE8UI_EXT = GL_LUMINANCE8UI_EXT,
187  TF_LUMINANCE_ALPHA8UI_EXT = GL_LUMINANCE_ALPHA8UI_EXT,
188 
189  TF_RGBA32I_EXT = GL_RGBA32I_EXT,
190  TF_RGB32I_EXT = GL_RGB32I_EXT,
191  TF_ALPHA32I_EXT = GL_ALPHA32I_EXT,
192  TF_INTENSITY32I_EXT = GL_INTENSITY32I_EXT,
193  TF_LUMINANCE32I_EXT = GL_LUMINANCE32I_EXT,
194  TF_LUMINANCE_ALPHA32I_EXT = GL_LUMINANCE_ALPHA32I_EXT,
195 
196  TF_RGBA16I_EXT = GL_RGBA16I_EXT,
197  TF_RGB16I_EXT = GL_RGB16I_EXT,
198  TF_ALPHA16I_EXT = GL_ALPHA16I_EXT,
199  TF_INTENSITY16I_EXT = GL_INTENSITY16I_EXT,
200  TF_LUMINANCE16I_EXT = GL_LUMINANCE16I_EXT,
201  TF_LUMINANCE_ALPHA16I_EXT = GL_LUMINANCE_ALPHA16I_EXT,
202 
203  TF_RGBA8I_EXT = GL_RGBA8I_EXT,
204  TF_RGB8I_EXT = GL_RGB8I_EXT,
205  TF_ALPHA8I_EXT = GL_ALPHA8I_EXT,
206  TF_INTENSITY8I_EXT = GL_INTENSITY8I_EXT,
207  TF_LUMINANCE8I_EXT = GL_LUMINANCE8I_EXT,
208  TF_LUMINANCE_ALPHA8I_EXT = GL_LUMINANCE_ALPHA8I_EXT,
209 
210  // GL_ARB_texture_rg
211  TF_RED = GL_RED,
212  TF_COMPRESSED_RED = GL_COMPRESSED_RED,
213  TF_COMPRESSED_RG = GL_COMPRESSED_RG,
214  TF_RG = GL_RG,
215  TF_R8 = GL_R8,
216  TF_R16 = GL_R16,
217  TF_RG8 = GL_RG8,
218  TF_RG16 = GL_RG16,
219  TF_R16F = GL_R16F,
220  TF_R32F = GL_R32F,
221  TF_RG16F = GL_RG16F,
222  TF_RG32F = GL_RG32F,
223  TF_R8I = GL_R8I,
224  TF_R8UI = GL_R8UI,
225  TF_R16I = GL_R16I,
226  TF_R16UI = GL_R16UI,
227  TF_R32I = GL_R32I,
228  TF_R32UI = GL_R32UI,
229  TF_RG8I = GL_RG8I,
230  TF_RG8UI = GL_RG8UI,
231  TF_RG16I = GL_RG16I,
232  TF_RG16UI = GL_RG16UI,
233  TF_RG32I = GL_RG32I,
234  TF_RG32UI = GL_RG32UI,
235 
236  // sRGB OpenGL 2.1
237  TF_SLUMINANCE_ALPHA = GL_SLUMINANCE_ALPHA,
238  TF_SLUMINANCE8_ALPHA8 = GL_SLUMINANCE8_ALPHA8,
239  TF_SLUMINANCE = GL_SLUMINANCE,
240  TF_SLUMINANCE8 = GL_SLUMINANCE8,
241  TF_COMPRESSED_SLUMINANCE = GL_COMPRESSED_SLUMINANCE,
242  TF_COMPRESSED_SLUMINANCE_ALPHA = GL_COMPRESSED_SLUMINANCE_ALPHA,
243 
244  // sRGB OpenGL 2.1 / 3.x
245  TF_SRGB = GL_SRGB,
246  TF_SRGB8 = GL_SRGB8,
247  TF_SRGB_ALPHA = GL_SRGB_ALPHA,
248  TF_SRGB8_ALPHA8 = GL_SRGB8_ALPHA8,
249  TF_COMPRESSED_SRGB = GL_COMPRESSED_SRGB,
250  TF_COMPRESSED_SRGB_ALPHA = GL_COMPRESSED_SRGB_ALPHA,
251 
252  // GL_EXT_texture_sRGB compressed formats
253  TF_COMPRESSED_SRGB_S3TC_DXT1_EXT = GL_COMPRESSED_SRGB_S3TC_DXT1_EXT,
254  TF_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
255  TF_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
256  TF_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
257 
258  // from table 3.12 opengl api specs 4.1
259  TF_R8_SNORM = GL_R8_SNORM,
260  TF_R16_SNORM = GL_R16_SNORM,
261  TF_RG8_SNORM = GL_RG8_SNORM,
262  TF_RG16_SNORM = GL_RG16_SNORM,
263  TF_RGB8_SNORM = GL_RGB8_SNORM,
264  TF_RGBA8_SNORM = GL_RGBA8_SNORM,
265  TF_RGB10_A2UI = GL_RGB10_A2UI,
266  TF_RGBA16_SNORM = GL_RGBA16_SNORM,
267  TF_R11F_G11F_B10F = GL_R11F_G11F_B10F,
268  TF_RGB9_E5 = GL_RGB9_E5,
269  TF_RGB8I = GL_RGB8I,
270  TF_RGB8UI = GL_RGB8UI,
271  TF_RGB16I = GL_RGB16I,
272  TF_RGB16UI = GL_RGB16UI,
273  TF_RGB32I = GL_RGB32I,
274  TF_RGB32UI = GL_RGB32UI,
275  TF_RGBA8I = GL_RGBA8I,
276  TF_RGBA8UI = GL_RGBA8UI,
277  TF_RGBA16I = GL_RGBA16I,
278  TF_RGBA16UI = GL_RGBA16UI,
279  TF_RGBA32I = GL_RGBA32I,
280  TF_RGBA32UI = GL_RGBA32UI
281 
282  } ETextureFormat;
283 
284  typedef enum
285  {
286  IF_RGB = GL_RGB,
287  IF_RGBA = GL_RGBA,
288  IF_BGR = GL_BGR,
289  IF_BGRA = GL_BGRA,
290  IF_RG = GL_RG,
291  IF_RG_INTEGER = GL_RG_INTEGER,
292  IF_RED = GL_RED,
293  IF_GREEN = GL_GREEN,
294  IF_BLUE = GL_BLUE,
295  IF_ALPHA = GL_ALPHA,
296  IF_LUMINANCE = GL_LUMINANCE,
297  IF_LUMINANCE_ALPHA = GL_LUMINANCE_ALPHA,
298  IF_DEPTH_COMPONENT = GL_DEPTH_COMPONENT,
299  IF_STENCIL_INDEX = GL_STENCIL_INDEX,
300 
301  // EXT_packed_depth_stencil / GL_ARB_framebuffer_object
302  IF_DEPTH_STENCIL = GL_DEPTH_STENCIL,
303 
304  // compressed formats
305  // note: with these format the type must be IT_IMPLICIT_TYPE
306 
307  IF_COMPRESSED_RGB_S3TC_DXT1 = GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
308  IF_COMPRESSED_RGBA_S3TC_DXT1 = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,
309  IF_COMPRESSED_RGBA_S3TC_DXT3 = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT,
310  IF_COMPRESSED_RGBA_S3TC_DXT5 = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
311 
312  // GL 3.0 (EXT_texture_integer)
313  IF_RED_INTEGER = GL_RED_INTEGER,
314  IF_GREEN_INTEGER = GL_GREEN_INTEGER,
315  IF_BLUE_INTEGER = GL_BLUE_INTEGER,
316  IF_ALPHA_INTEGER = GL_ALPHA_INTEGER,
317  IF_RGB_INTEGER = GL_RGB_INTEGER,
318  IF_RGBA_INTEGER = GL_RGBA_INTEGER,
319  IF_BGR_INTEGER = GL_BGR_INTEGER,
320  IF_BGRA_INTEGER = GL_BGRA_INTEGER,
321 
322  // EXT_texture_integer
323  IF_LUMINANCE_INTEGER = GL_LUMINANCE_INTEGER_EXT,
324  IF_LUMINANCE_ALPHA_INTEGER = GL_LUMINANCE_ALPHA_INTEGER_EXT,
325 
326  } EImageFormat;
327 
328  typedef enum
329  {
330  T2DT_TEXTURE_2D = GL_TEXTURE_2D,
331  T2DT_TEXTURE_CUBE_MAP_POSITIVE_X = GL_TEXTURE_CUBE_MAP_POSITIVE_X,
332  T2DT_TEXTURE_CUBE_MAP_NEGATIVE_X = GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
333  T2DT_TEXTURE_CUBE_MAP_POSITIVE_Y = GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
334  T2DT_TEXTURE_CUBE_MAP_NEGATIVE_Y = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
335  T2DT_TEXTURE_CUBE_MAP_POSITIVE_Z = GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
336  T2DT_TEXTURE_CUBE_MAP_NEGATIVE_Z = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
337  T2DT_TEXTURE_RECTANGLE = GL_TEXTURE_RECTANGLE_ARB,
338  T2DT_TEXTURE_1D_ARRAY = GL_TEXTURE_1D_ARRAY,
339  T2DT_TEXTURE_2D_MULTISAMPLE = GL_TEXTURE_2D_MULTISAMPLE,
340  } ETex2DTarget;
341 
342  typedef enum
343  {
345 
346  AP_COLOR_ATTACHMENT0 = GL_COLOR_ATTACHMENT0,
347  AP_COLOR_ATTACHMENT1 = GL_COLOR_ATTACHMENT1,
348  AP_COLOR_ATTACHMENT2 = GL_COLOR_ATTACHMENT2,
349  AP_COLOR_ATTACHMENT3 = GL_COLOR_ATTACHMENT3,
350  AP_COLOR_ATTACHMENT4 = GL_COLOR_ATTACHMENT4,
351  AP_COLOR_ATTACHMENT5 = GL_COLOR_ATTACHMENT5,
352  AP_COLOR_ATTACHMENT6 = GL_COLOR_ATTACHMENT6,
353  AP_COLOR_ATTACHMENT7 = GL_COLOR_ATTACHMENT7,
354  AP_COLOR_ATTACHMENT8 = GL_COLOR_ATTACHMENT8,
355  AP_COLOR_ATTACHMENT9 = GL_COLOR_ATTACHMENT9,
356  AP_COLOR_ATTACHMENT10 = GL_COLOR_ATTACHMENT10,
357  AP_COLOR_ATTACHMENT11 = GL_COLOR_ATTACHMENT11,
358  AP_COLOR_ATTACHMENT12 = GL_COLOR_ATTACHMENT12,
359  AP_COLOR_ATTACHMENT13 = GL_COLOR_ATTACHMENT13,
360  AP_COLOR_ATTACHMENT14 = GL_COLOR_ATTACHMENT14,
361  AP_COLOR_ATTACHMENT15 = GL_COLOR_ATTACHMENT15,
362 
363  AP_DEPTH_ATTACHMENT = GL_DEPTH_ATTACHMENT,
364 
365  AP_STENCIL_ATTACHMENT = GL_STENCIL_ATTACHMENT,
366 
367  AP_DEPTH_STENCIL_ATTACHMENT = GL_DEPTH_STENCIL_ATTACHMENT,
369 
371  typedef enum
372  {
373  CBF_RED = GL_RED,
374  CBF_RG = GL_RG,
375  CBF_RGB = GL_RGB,
376  CBF_RGBA = GL_RGBA,
377 
378  // see table 3.12 opengl api specs 4.1
379  CBF_R8 = GL_R8,
380  // CBF_R8_SNORM = GL_R8_SNORM,
381  CBF_R16 = GL_R16,
382  // CBF_R16_SNORM = GL_R16_SNORM,
383  CBF_RG8 = GL_RG8,
384  // CBF_RG8_SNORM = GL_RG8_SNORM,
385  CBF_RG16 = GL_RG16,
386  // CBF_RG16_SNORM = GL_RG16_SNORM,
387  // CBF_R3_G3_B2 = GL_R3_G3_B2,
388  // CBF_RGB4 = GL_RGB4,
389  // CBF_RGB5 = GL_RGB5,
390  // CBF_RGB8 = GL_RGB8,
391  // CBF_RGB8_SNORM = GL_RGB8_SNORM,
392  // CBF_RGB10 = GL_RGB10,
393  // CBF_RGB12 = GL_RGB12,
394  // CBF_RGB16 = GL_RGB16,
395  // CBF_RGB16_SNORM = GL_RGB16_SNORM,
396  // CBF_RGBA2 = GL_RGBA2,
397  // CBF_RGBA4 = GL_RGBA4,
398  // CBF_RGB5_A1 = GL_RGB5_A1,
399  CBF_RGBA8 = GL_RGBA8,
400  // CBF_RGBA8_SNORM = GL_RGBA8_SNORM,
401  CBF_RGB10_A2 = GL_RGB10_A2,
402  CBF_RGB10_A2UI = GL_RGB10_A2UI,
403  // CBF_RGBA12 = GL_RGBA12,
404  CBF_RGBA16 = GL_RGBA16,
405  // CBF_RGBA16_SNORM = GL_RGBA16_SNORM,
406  // CBF_SRGB8 = GL_SRGB8,
407  CBF_SRGB8_ALPHA8 = GL_SRGB8_ALPHA8,
408  CBF_R16F = GL_R16F,
409  CBF_RG16F = GL_RG16F,
410  // CBF_RGB16F = GL_RGB16F,
411  CBF_RGBA16F = GL_RGBA16F,
412  CBF_R32F = GL_R32F,
413  CBF_RG32F = GL_RG32F,
414  // CBF_RGB32F = GL_RGB32F,
415  CBF_RGBA32F = GL_RGBA32F,
416  CBF_R11F_G11F_B10F = GL_R11F_G11F_B10F,
417  // CBF_RGB9_E5 = GL_RGB9_E5,
418  CBF_R8I = GL_R8I,
419  CBF_R8UI = GL_R8UI,
420  CBF_R16I = GL_R16I,
421  CBF_R16UI = GL_R16UI,
422  CBF_R32I = GL_R32I,
423  CBF_R32UI = GL_R32UI,
424  CBF_RG8I = GL_RG8I,
425  CBF_RG8UI = GL_RG8UI,
426  CBF_RG16I = GL_RG16I,
427  CBF_RG16UI = GL_RG16UI,
428  CBF_RG32I = GL_RG32I,
429  CBF_RG32UI = GL_RG32UI,
430  // CBF_RGB8I = GL_RGB8I,
431  // CBF_RGB8UI = GL_RGB8UI,
432  // CBF_RGB16I = GL_RGB16I,
433  // CBF_RGB16UI = GL_RGB16UI,
434  // CBF_RGB32I = GL_RGB32I,
435  // CBF_RGB32UI = GL_RGB32UI,
436  CBF_RGBA8I = GL_RGBA8I,
437  CBF_RGBA8UI = GL_RGBA8UI,
438  CBF_RGBA16I = GL_RGBA16I,
439  CBF_RGBA16UI = GL_RGBA16UI,
440  CBF_RGBA32I = GL_RGBA32I,
441  CBF_RGBA32UI = GL_RGBA32UI
442 
444 
445  typedef enum
446  {
447  DBF_DEPTH_COMPONENT = GL_DEPTH_COMPONENT,
448  DBF_DEPTH_COMPONENT16 = GL_DEPTH_COMPONENT16,
449  DBF_DEPTH_COMPONENT24 = GL_DEPTH_COMPONENT24,
450  DBF_DEPTH_COMPONENT32 = GL_DEPTH_COMPONENT32,
451  DBF_DEPTH_COMPONENT32F = GL_DEPTH_COMPONENT32F,
453 
454  typedef enum
455  {
456  SBF_STENCIL_INDEX1 = GL_STENCIL_INDEX1_EXT,
457  SBF_STENCIL_INDEX4 = GL_STENCIL_INDEX4_EXT,
458  SBF_STENCIL_INDEX8 = GL_STENCIL_INDEX8_EXT,
459  SBF_STENCIL_INDEX16 = GL_STENCIL_INDEX16_EXT
461 
462  typedef enum
463  {
464  DSBT_DEPTH_STENCIL = GL_DEPTH_STENCIL,
465  DSBT_DEPTH24_STENCIL8 = GL_DEPTH24_STENCIL8,
466  DSBT_DEPTH32F_STENCIL8 = GL_DEPTH32F_STENCIL8,
468 
469  typedef enum
470  {
472  CF_CLEAR_COLOR = GL_COLOR_BUFFER_BIT,
473  CF_CLEAR_DEPTH = GL_DEPTH_BUFFER_BIT,
474  CF_CLEAR_STENCIL = GL_STENCIL_BUFFER_BIT,
479  } EClearFlags;
480 
481  typedef enum
482  {
486  } EClearColorMode;
487 
488  typedef enum
489  {
490  BF_ZERO=GL_ZERO,
491  BF_ONE=GL_ONE,
492  BF_SRC_COLOR=GL_SRC_COLOR,
493  BF_ONE_MINUS_SRC_COLOR=GL_ONE_MINUS_SRC_COLOR,
494  BF_DST_COLOR=GL_DST_COLOR,
495  BF_ONE_MINUS_DST_COLOR=GL_ONE_MINUS_DST_COLOR,
496  BF_SRC_ALPHA=GL_SRC_ALPHA,
497  BF_ONE_MINUS_SRC_ALPHA=GL_ONE_MINUS_SRC_ALPHA,
498  BF_DST_ALPHA=GL_DST_ALPHA,
499  BF_ONE_MINUS_DST_ALPHA=GL_ONE_MINUS_DST_ALPHA,
500  BF_CONSTANT_COLOR=GL_CONSTANT_COLOR,
501  BF_ONE_MINUS_CONSTANT_COLOR=GL_ONE_MINUS_CONSTANT_COLOR,
502  BF_CONSTANT_ALPHA=GL_CONSTANT_ALPHA,
503  BF_ONE_MINUS_CONSTANT_ALPHA=GL_ONE_MINUS_CONSTANT_ALPHA,
504  BF_SRC_ALPHA_SATURATE=GL_SRC_ALPHA_SATURATE
505  } EBlendFactor;
506 
507  typedef enum
508  {
510  TD_TEXTURE_1D = GL_TEXTURE_1D,
511  TD_TEXTURE_2D = GL_TEXTURE_2D,
512  TD_TEXTURE_3D = GL_TEXTURE_3D,
513  TD_TEXTURE_CUBE_MAP = GL_TEXTURE_CUBE_MAP,
514  TD_TEXTURE_RECTANGLE = GL_TEXTURE_RECTANGLE,
515  TD_TEXTURE_1D_ARRAY = GL_TEXTURE_1D_ARRAY,
516  TD_TEXTURE_2D_ARRAY = GL_TEXTURE_2D_ARRAY,
517  TD_TEXTURE_BUFFER = GL_TEXTURE_BUFFER,
518  TD_TEXTURE_2D_MULTISAMPLE = GL_TEXTURE_2D_MULTISAMPLE,
519  TD_TEXTURE_2D_MULTISAMPLE_ARRAY = GL_TEXTURE_2D_MULTISAMPLE_ARRAY
521 
522  typedef enum
523  {
524  TCM_NONE = GL_NONE,
525  TCM_COMPARE_R_TO_TEXTURE = GL_COMPARE_R_TO_TEXTURE,
526  TCM_COMPARE_REF_DEPTH_TO_TEXTURE = GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT
527  } ETexCompareMode;
528 
529  typedef enum
530  {
531  TCF_LEQUAL = GL_LEQUAL,
532  TCF_GEQUAL = GL_GEQUAL,
533  TCF_LESS = GL_LESS,
534  TCF_GREATER = GL_GREATER,
535  TCF_EQUAL = GL_EQUAL,
536  TCF_NOTEQUAL = GL_NOTEQUAL,
537  TCF_ALWAYS = GL_ALWAYS,
538  TCF_NEVER = GL_NEVER
539  } ETexCompareFunc;
540 
541  typedef enum
542  {
543  DTM_LUMINANCE = GL_LUMINANCE,
544  DTM_INTENSITY = GL_INTENSITY,
545  DTM_ALPHA = GL_ALPHA,
546  DTM_RED = GL_RED
548 
549  typedef enum
550  {
551  RDB_NONE = GL_NONE,
552  RDB_FRONT_LEFT = GL_FRONT_LEFT,
553  RDB_FRONT_RIGHT = GL_FRONT_RIGHT,
554  RDB_BACK_LEFT = GL_BACK_LEFT,
555  RDB_BACK_RIGHT = GL_BACK_RIGHT,
556  RDB_AUX0 = GL_AUX0,
557  RDB_AUX1 = GL_AUX1,
558  RDB_AUX2 = GL_AUX2,
559  RDB_AUX3 = GL_AUX3,
560  RDB_COLOR_ATTACHMENT0 = GL_COLOR_ATTACHMENT0_EXT,
561  RDB_COLOR_ATTACHMENT1 = GL_COLOR_ATTACHMENT1_EXT,
562  RDB_COLOR_ATTACHMENT2 = GL_COLOR_ATTACHMENT2_EXT,
563  RDB_COLOR_ATTACHMENT3 = GL_COLOR_ATTACHMENT3_EXT,
564  RDB_COLOR_ATTACHMENT4 = GL_COLOR_ATTACHMENT4_EXT,
565  RDB_COLOR_ATTACHMENT5 = GL_COLOR_ATTACHMENT5_EXT,
566  RDB_COLOR_ATTACHMENT6 = GL_COLOR_ATTACHMENT6_EXT,
567  RDB_COLOR_ATTACHMENT7 = GL_COLOR_ATTACHMENT7_EXT,
568  RDB_COLOR_ATTACHMENT8 = GL_COLOR_ATTACHMENT8_EXT,
569  RDB_COLOR_ATTACHMENT9 = GL_COLOR_ATTACHMENT9_EXT,
570  RDB_COLOR_ATTACHMENT10 = GL_COLOR_ATTACHMENT10_EXT,
571  RDB_COLOR_ATTACHMENT11 = GL_COLOR_ATTACHMENT11_EXT,
572  RDB_COLOR_ATTACHMENT12 = GL_COLOR_ATTACHMENT12_EXT,
573  RDB_COLOR_ATTACHMENT13 = GL_COLOR_ATTACHMENT13_EXT,
574  RDB_COLOR_ATTACHMENT14 = GL_COLOR_ATTACHMENT14_EXT,
575  RDB_COLOR_ATTACHMENT15 = GL_COLOR_ATTACHMENT15_EXT
576  } EReadDrawBuffer;
577 
578  typedef enum
579  {
580  FBB_FRAMEBUFFER = GL_FRAMEBUFFER,
581  FBB_DRAW_FRAMEBUFFER = GL_DRAW_FRAMEBUFFER,
582  FBB_READ_FRAMEBUFFER = GL_READ_FRAMEBUFFER,
584 
585  typedef enum
586  {
588 
589  IT_UNSIGNED_BYTE = GL_UNSIGNED_BYTE,
590  IT_BYTE = GL_BYTE,
591  IT_UNSIGNED_SHORT = GL_UNSIGNED_SHORT,
592  IT_SHORT = GL_SHORT,
593  IT_UNSIGNED_INT = GL_UNSIGNED_INT,
594  IT_INT = GL_INT,
595  IT_FLOAT = GL_FLOAT,
596  IT_UNSIGNED_BYTE_3_3_2 = GL_UNSIGNED_BYTE_3_3_2,
597  IT_UNSIGNED_BYTE_2_3_3_REV = GL_UNSIGNED_BYTE_2_3_3_REV,
598  IT_UNSIGNED_SHORT_5_6_5 = GL_UNSIGNED_SHORT_5_6_5,
599  IT_UNSIGNED_SHORT_5_6_5_REV = GL_UNSIGNED_SHORT_5_6_5_REV,
600  IT_UNSIGNED_SHORT_4_4_4_4 = GL_UNSIGNED_SHORT_4_4_4_4,
601  IT_UNSIGNED_SHORT_4_4_4_4_REV = GL_UNSIGNED_SHORT_4_4_4_4_REV,
602  IT_UNSIGNED_SHORT_5_5_5_1 = GL_UNSIGNED_SHORT_5_5_5_1,
603  IT_UNSIGNED_SHORT_1_5_5_5_REV = GL_UNSIGNED_SHORT_1_5_5_5_REV,
604  IT_UNSIGNED_INT_8_8_8_8 = GL_UNSIGNED_INT_8_8_8_8,
605  IT_UNSIGNED_INT_8_8_8_8_REV = GL_UNSIGNED_INT_8_8_8_8_REV,
606  IT_UNSIGNED_INT_10_10_10_2 = GL_UNSIGNED_INT_10_10_10_2,
607  IT_UNSIGNED_INT_2_10_10_10_REV = GL_UNSIGNED_INT_2_10_10_10_REV,
608 
609  IT_UNSIGNED_INT_5_9_9_9_REV = GL_UNSIGNED_INT_5_9_9_9_REV_EXT, /* EXT_texture_shared_exponent, supports only GL_RGB */
610  IT_UNSIGNED_INT_10F_11F_11F_REV = GL_UNSIGNED_INT_10F_11F_11F_REV_EXT, /* EXT_packed_float, supports only GL_RGB */
611  IT_UNSIGNED_INT_24_8 = GL_UNSIGNED_INT_24_8, /* EXT_packed_depth_stencil/GL_ARB_framebuffer_object */
612  IT_FLOAT_32_UNSIGNED_INT_24_8_REV = GL_FLOAT_32_UNSIGNED_INT_24_8_REV /* ARB_depth_buffer_float */
613 
614  } EImageType;
615 
616  typedef enum
617  {
618  PT_POINTS = GL_POINTS,
619  PT_LINES = GL_LINES,
620  PT_LINE_LOOP = GL_LINE_LOOP,
621 
622  PT_LINE_STRIP = GL_LINE_STRIP,
623  PT_TRIANGLES = GL_TRIANGLES,
624  PT_TRIANGLE_STRIP = GL_TRIANGLE_STRIP,
625  PT_TRIANGLE_FAN = GL_TRIANGLE_FAN,
626  PT_QUADS = GL_QUADS,
627  PT_QUAD_STRIP = GL_QUAD_STRIP,
628  PT_POLYGON = GL_POLYGON,
629 
630  // geometry shader
631  PT_LINES_ADJACENCY = GL_LINES_ADJACENCY_EXT,
632  PT_LINE_STRIP_ADJACENCY = GL_LINE_STRIP_ADJACENCY_EXT,
633  PT_TRIANGLES_ADJACENCY = GL_TRIANGLES_ADJACENCY_EXT,
634  PT_TRIANGLE_STRIP_ADJACENCY = GL_TRIANGLE_STRIP_ADJACENCY_EXT,
635 
636  // GL_ARB_tessellation_shader
637  PT_PATCHES = GL_PATCHES,
638 
640 
641  } EPrimitiveType;
642 
643  typedef enum
644  {
645  PF_FRONT=GL_FRONT,
646  PF_BACK=GL_BACK,
647  PF_FRONT_AND_BACK=GL_FRONT_AND_BACK
648  } EPolygonFace;
649 
650  typedef enum
651  {
652  HM_FASTEST=GL_FASTEST,
653  HM_NICEST=GL_NICEST,
654  HM_DONT_CARE=GL_DONT_CARE
655  } EHintMode;
656 
657  typedef enum
658  {
659  FF_CW=GL_CW,
660  FF_CCW=GL_CCW
661  } EFrontFace;
662 
663  typedef enum
664  {
665  FU_NEVER=GL_NEVER,
666  FU_LESS=GL_LESS,
667  FU_EQUAL=GL_EQUAL,
668  FU_LEQUAL=GL_LEQUAL,
669  FU_GREATER=GL_GREATER,
670  FU_NOTEQUAL=GL_NOTEQUAL,
671  FU_GEQUAL=GL_GEQUAL,
672  FU_ALWAYS=GL_ALWAYS
673  } EFunction;
674 
675  typedef enum
676  {
677  PM_FILL=GL_FILL,
678  PM_LINE=GL_LINE,
679  PM_POINT=GL_POINT
680  } EPolygonMode;
681 
682  typedef enum
683  {
684  SM_FLAT=GL_FLAT,
685  SM_SMOOTH=GL_SMOOTH
686  } EShadeModel;
687 
688  typedef enum
689  {
690  BE_FUNC_ADD=GL_FUNC_ADD,
691  BE_FUNC_SUBTRACT=GL_FUNC_SUBTRACT,
692  BE_FUNC_REVERSE_SUBTRACT=GL_FUNC_REVERSE_SUBTRACT,
693  BE_MIN=GL_MIN,
694  BE_MAX=GL_MAX
695  } EBlendEquation;
696 
697  typedef enum
698  {
699  CM_EMISSION=GL_EMISSION,
700  CM_AMBIENT=GL_AMBIENT,
701  CM_DIFFUSE=GL_DIFFUSE,
702  CM_SPECULAR=GL_SPECULAR,
703  CM_AMBIENT_AND_DIFFUSE=GL_AMBIENT_AND_DIFFUSE
704  } EColorMaterial;
705 
706  typedef enum
707  {
708  CC_SEPARATE_SPECULAR_COLOR=GL_SEPARATE_SPECULAR_COLOR,
709  CC_SINGLE_COLOR=GL_SINGLE_COLOR
710  } EColorControl;
711 
712  typedef enum
713  {
714  FM_LINEAR=GL_LINEAR,
715  FM_EXP=GL_EXP,
716  FM_EXP2=GL_EXP2
717  } EFogMode;
718 
719  typedef enum
720  {
721  LO_CLEAR=GL_CLEAR,
722  LO_SET=GL_SET,
723  LO_COPY=GL_COPY,
724  LO_COPY_INVERTED=GL_COPY_INVERTED,
725  LO_NOOP=GL_NOOP,
726  LO_INVERT=GL_INVERT,
727  LO_AND=GL_AND,
728  LO_NAND=GL_NAND,
729  LO_OR=GL_OR,
730  LO_NOR=GL_NOR,
731  LO_XOR=GL_XOR,
732  LO_EQUIV=GL_EQUIV,
733  LO_AND_REVERSE=GL_AND_REVERSE,
734  LO_AND_INVERTED=GL_AND_INVERTED,
735  LO_OR_REVERSE=GL_OR_REVERSE,
736  LO_OR_INVERTED=GL_OR_INVERTED
737  } ELogicOp;
738 
739  typedef enum
740  {
741  SO_KEEP=GL_KEEP,
742  SO_ZERO=GL_ZERO,
743  SO_REPLACE=GL_REPLACE,
744  SO_INCR=GL_INCR,
745  SO_INCR_WRAP=GL_INCR_WRAP,
746  SO_DECR=GL_DECR,
747  SO_DECR_WRAP=GL_DECR_WRAP,
748  SO_INVERT=GL_INVERT
749  } EStencilOp;
750 
751  typedef enum
752  {
753  TPF_NEAREST=GL_NEAREST,
754  TPF_LINEAR=GL_LINEAR,
755  TPF_NEAREST_MIPMAP_NEAREST=GL_NEAREST_MIPMAP_NEAREST,
756  TPF_LINEAR_MIPMAP_NEAREST=GL_LINEAR_MIPMAP_NEAREST,
757  TPF_NEAREST_MIPMAP_LINEAR=GL_NEAREST_MIPMAP_LINEAR,
758  TPF_LINEAR_MIPMAP_LINEAR=GL_LINEAR_MIPMAP_LINEAR
759  } ETexParamFilter;
760 
761  typedef enum
762  {
763  TPW_CLAMP = GL_CLAMP,
764  TPW_CLAMP_TO_BORDER = GL_CLAMP_TO_BORDER,
765  TPW_CLAMP_TO_EDGE = GL_CLAMP_TO_EDGE,
766  TPW_MIRRORED_REPEAT = GL_MIRRORED_REPEAT,
767  TPW_REPEAT = GL_REPEAT
768  } ETexParamWrap;
769 
770  typedef enum
771  {
772  TEM_DECAL=GL_DECAL,
773  TEM_MODULATE=GL_MODULATE,
774  TEM_ADD=GL_ADD,
775  TEM_BLEND=GL_BLEND,
776  TEM_REPLACE=GL_REPLACE,
777  TEM_COMBINE=GL_COMBINE,
778  TEM_ADD_SIGN=GL_ADD_SIGNED,
779  TEM_INTERPOLATE=GL_INTERPOLATE,
780  TEM_SUBTRACT=GL_SUBTRACT,
781  TEM_DOT3_RGB=GL_DOT3_RGB,
782  TEM_DOT3_RGBA=GL_DOT3_RGBA
783  } ETexEnvMode;
784 
785  typedef enum
786  {
787  TES_TEXTURE=GL_TEXTURE,
788  TES_TEXTURE0=GL_TEXTURE0,
789  TES_TEXTURE1=GL_TEXTURE1,
790  TES_TEXTURE2=GL_TEXTURE2,
791  TES_TEXTURE3=GL_TEXTURE3,
792  TES_TEXTURE4=GL_TEXTURE4,
793  TES_TEXTURE5=GL_TEXTURE5,
794  TES_TEXTURE6=GL_TEXTURE6,
795  TES_TEXTURE7=GL_TEXTURE7,
796  TES_CONSTANT=GL_CONSTANT,
797  TES_PRIMARY_COLOR=GL_PRIMARY_COLOR,
798  TES_PREVIOUS=GL_PREVIOUS
799  } ETexEnvSource;
800 
801  typedef enum
802  {
803  TEO_SRC_COLOR=GL_SRC_COLOR,
804  TEO_ONE_MINUS_SRC_COLOR=GL_ONE_MINUS_SRC_COLOR,
805  TEO_SRC_ALPHA=GL_SRC_ALPHA,
806  TEO_ONE_MINUS_SRC_ALPHA=GL_ONE_MINUS_SRC_ALPHA
807  } ETexEnvOperand;
808 
810  typedef enum
811  {
813  TGM_EYE_LINEAR = GL_EYE_LINEAR,
814  TGM_OBJECT_LINEAR = GL_OBJECT_LINEAR,
815  TGM_SPHERE_MAP = GL_SPHERE_MAP,
816  TGM_REFLECTION_MAP = GL_REFLECTION_MAP,
817  TGM_NORMAL_MAP = GL_NORMAL_MAP
818  } ETexGenMode;
819 
821  typedef enum
822  {
823  // Common ones
834 
835  // Smoothing
839 
840  // Stippling
843 
844  // Point sprites
847 
848  // Fixed function pipeline
855 
856  // Available only under OpenGL 2.x
858 
859  // OpenGL 3.2
861 
862  // OpenGL 3.0
871 
872  // Multisampling
876 
878 
880 
881  } EEnable;
882 
883  typedef enum
884  {
885  BU_STREAM_DRAW = GL_STREAM_DRAW,
886  BU_STREAM_READ = GL_STREAM_READ,
887  BU_STREAM_COPY = GL_STREAM_COPY,
888  BU_STATIC_DRAW = GL_STATIC_DRAW,
889  BU_STATIC_READ = GL_STATIC_READ,
890  BU_STATIC_COPY = GL_STATIC_COPY,
891  BU_DYNAMIC_DRAW = GL_DYNAMIC_DRAW,
892  BU_DYNAMIC_READ = GL_DYNAMIC_READ,
893  BU_DYNAMIC_COPY = GL_DYNAMIC_COPY
895 
896  typedef enum
897  {
898  BA_READ_ONLY = GL_READ_ONLY,
899  BA_WRITE_ONLY = GL_WRITE_ONLY,
900  BA_READ_WRITE = GL_READ_WRITE
902 
903  typedef enum
904  {
908  AlignTop = 8,
911  } EAlign;
912 
913  typedef enum
914  {
919  } ETextAlign;
920 
921  typedef enum
922  {
923  Text2D = 1,
924  Text3D = 2
925  } ETextMode;
926 
927  typedef enum
928  {
932  } ETextLayout;
933 
934  typedef enum
935  {
939  } EDepthSortMode;
940 
941  typedef enum
942  {
949  } EImageDimension;
950 
951  typedef enum
952  {
958  } EStateType;
959 
960  typedef enum
961  {
971 
1004 
1014 
1022 
1040  /* ... */
1041 
1042  RS_TexGen = RS_TextureSampler + VL_MAX_TEXTURE_IMAGE_UNITS,
1059  /* ... */
1060 
1061  RS_TexEnv = RS_TexGen + VL_MAX_LEGACY_TEXTURE_UNITS,
1078  /* ... */
1079 
1080  RS_TextureMatrix = RS_TexEnv + VL_MAX_LEGACY_TEXTURE_UNITS,
1097  /* ... */
1098 
1099  RS_RenderStateCount = RS_TextureMatrix + VL_MAX_LEGACY_TEXTURE_UNITS,
1100 
1102 
1103  } ERenderState;
1104 
1105  typedef enum
1106  {
1107  BB_COLOR_BUFFER_BIT = GL_COLOR_BUFFER_BIT,
1108  BB_DEPTH_BUFFER_BIT = GL_DEPTH_BUFFER_BIT,
1109  BB_STENCIL_BUFFER_BIT = GL_STENCIL_BUFFER_BIT
1110  } EBufferBits;
1111 
1112  typedef enum
1113  {
1116  } EBillboardType;
1117 
1118  typedef enum
1119  {
1122  } ESortMode;
1123 
1124  typedef enum
1125  {
1128  } EGetMode;
1129 
1130  typedef enum
1131  {
1140  } EStringEncoding;
1141 
1142  typedef enum
1143  {
1146  } EOpenMode;
1147 
1148  typedef enum
1149  {
1151 
1162 
1189 
1194 
1224 
1225  // non unicode keys
1226 
1260 
1262 
1264 
1265  } EKey;
1266 
1267  typedef enum
1268  {
1270 
1274 
1276  } EMouseButton;
1277 
1278  typedef enum
1279  {
1280  IN_Local = 0x00,
1281  IN_Propagate = 0x01,
1282  IN_Sticky = 0x04,
1283  IN_Propagate_Overrides_Sticky = 0x01 | 0x02 | 0x04,
1284  IN_Propagate_Overrides = 0x01 | 0x02,
1285  IN_Propagate_Sticky = 0x01 | 0x04,
1286  } EInheritance;
1287 
1288  typedef enum
1289  {
1290  ST_VERTEX_SHADER = GL_VERTEX_SHADER,
1291  ST_TESS_CONTROL_SHADER = GL_TESS_CONTROL_SHADER,
1292  ST_TESS_EVALUATION_SHADER = GL_TESS_EVALUATION_SHADER,
1293  ST_GEOMETRY_SHADER = GL_GEOMETRY_SHADER,
1294  ST_FRAGMENT_SHADER = GL_FRAGMENT_SHADER
1295  } EShaderType;
1296 
1297  typedef enum
1298  {
1299  TW_TESS_WINDING_ODD = GLU_TESS_WINDING_ODD,
1300  TW_TESS_WINDING_NONZERO = GLU_TESS_WINDING_NONZERO,
1301  TW_TESS_WINDING_POSITIVE = GLU_TESS_WINDING_POSITIVE,
1302  TW_TESS_WINDING_NEGATIVE = GLU_TESS_WINDING_NEGATIVE,
1303  TW_TESS_WINDING_ABS_GEQ_TWO = GLU_TESS_WINDING_ABS_GEQ_TWO
1305 
1306  typedef enum {
1311  } EVerbosityLevel;
1312 
1313  typedef enum
1314  {
1321  } ELogLevel;
1322 
1323  typedef enum
1324  {
1325  PPCO_LOWER_LEFT = GL_LOWER_LEFT,
1326  PPCO_UPPER_LEFT = GL_UPPER_LEFT
1328 
1331  typedef enum
1332  {
1334 
1337 
1342 
1344  typedef enum
1345  {
1362 
1363  // Max number of tex coord attribute arrays
1365 
1366  // Max vertex attribute arrays
1368 
1369  // Handy aliases
1370  VA_TexCoordDiffuse = VA_TexCoord0, // diffuse texture coords
1371  VA_TexCoordDetail = VA_TexCoord1, // detail texture coords
1372  VA_TexCoordShadow = VA_TexCoord2, // precomputed shadow/light map texture coords
1373  VA_TexCoordSpecular = VA_TexCoord3, // specular texture coords
1374  VA_TexCoordNormalMap = VA_TexCoord4, // normalmap texture coords
1375  VA_TexCoordDisplace = VA_TexCoord5, // dispace texture coords for tesselation, heightmap etc.
1376  VA_Tangent = VA_TexCoord6, // tangent vectors (normal mapping)
1377  VA_Bitangent = VA_TexCoord7, // bitangent vectors (normal mapping)
1378  VA_NextPosition = VA_TexCoord8, // next frame vertex position for vertex blending
1379  VA_NextNormal = VA_TexCoord9, // next frame normal position for vertex blending
1381 
1383  typedef enum
1384  {
1385  UT_NONE = 0x0,
1386 
1387  UT_FLOAT = GL_FLOAT,
1388  UT_FLOAT_VEC2 = GL_FLOAT_VEC2,
1389  UT_FLOAT_VEC3 = GL_FLOAT_VEC3,
1390  UT_FLOAT_VEC4 = GL_FLOAT_VEC4,
1391  UT_DOUBLE = GL_DOUBLE,
1392  UT_DOUBLE_VEC2 = GL_DOUBLE_VEC2,
1393  UT_DOUBLE_VEC3 = GL_DOUBLE_VEC3,
1394  UT_DOUBLE_VEC4 = GL_DOUBLE_VEC4,
1395  UT_INT = GL_INT,
1396  UT_INT_VEC2 = GL_INT_VEC2,
1397  UT_INT_VEC3 = GL_INT_VEC3,
1398  UT_INT_VEC4 = GL_INT_VEC4,
1399  UT_UNSIGNED_INT = GL_UNSIGNED_INT,
1400  UT_UNSIGNED_INT_VEC2 = GL_UNSIGNED_INT_VEC2,
1401  UT_UNSIGNED_INT_VEC3 = GL_UNSIGNED_INT_VEC3,
1402  UT_UNSIGNED_INT_VEC4 = GL_UNSIGNED_INT_VEC4,
1403  UT_BOOL = GL_BOOL,
1404  UT_BOOL_VEC2 = GL_BOOL_VEC2,
1405  UT_BOOL_VEC3 = GL_BOOL_VEC3,
1406  UT_BOOL_VEC4 = GL_BOOL_VEC4,
1407  UT_FLOAT_MAT2 = GL_FLOAT_MAT2,
1408  UT_FLOAT_MAT3 = GL_FLOAT_MAT3,
1409  UT_FLOAT_MAT4 = GL_FLOAT_MAT4,
1410  UT_FLOAT_MAT2x3 = GL_FLOAT_MAT2x3,
1411  UT_FLOAT_MAT2x4 = GL_FLOAT_MAT2x4,
1412  UT_FLOAT_MAT3x2 = GL_FLOAT_MAT3x2,
1413  UT_FLOAT_MAT3x4 = GL_FLOAT_MAT3x4 ,
1414  UT_FLOAT_MAT4x2 = GL_FLOAT_MAT4x2 ,
1415  UT_FLOAT_MAT4x3 = GL_FLOAT_MAT4x3 ,
1416  UT_DOUBLE_MAT2 = GL_DOUBLE_MAT2 ,
1417  UT_DOUBLE_MAT3 = GL_DOUBLE_MAT3 ,
1418  UT_DOUBLE_MAT4 = GL_DOUBLE_MAT4 ,
1419  UT_DOUBLE_MAT2x3 = GL_DOUBLE_MAT2x3 ,
1420  UT_DOUBLE_MAT2x4 = GL_DOUBLE_MAT2x4 ,
1421  UT_DOUBLE_MAT3x2 = GL_DOUBLE_MAT3x2 ,
1422  UT_DOUBLE_MAT3x4 = GL_DOUBLE_MAT3x4 ,
1423  UT_DOUBLE_MAT4x2 = GL_DOUBLE_MAT4x2 ,
1424  UT_DOUBLE_MAT4x3 = GL_DOUBLE_MAT4x3 ,
1425 
1426  UT_SAMPLER_1D = GL_SAMPLER_1D ,
1427  UT_SAMPLER_2D = GL_SAMPLER_2D ,
1428  UT_SAMPLER_3D = GL_SAMPLER_3D ,
1429  UT_SAMPLER_CUBE = GL_SAMPLER_CUBE ,
1430  UT_SAMPLER_1D_SHADOW = GL_SAMPLER_1D_SHADOW ,
1431  UT_SAMPLER_2D_SHADOW = GL_SAMPLER_2D_SHADOW ,
1432  UT_SAMPLER_1D_ARRAY = GL_SAMPLER_1D_ARRAY ,
1433  UT_SAMPLER_2D_ARRAY = GL_SAMPLER_2D_ARRAY ,
1434  UT_SAMPLER_1D_ARRAY_SHADOW = GL_SAMPLER_1D_ARRAY_SHADOW ,
1435  UT_SAMPLER_2D_ARRAY_SHADOW = GL_SAMPLER_2D_ARRAY_SHADOW ,
1436  UT_SAMPLER_2D_MULTISAMPLE = GL_SAMPLER_2D_MULTISAMPLE ,
1437  UT_SAMPLER_2D_MULTISAMPLE_ARRAY = GL_SAMPLER_2D_MULTISAMPLE_ARRAY ,
1438  UT_SAMPLER_CUBE_SHADOW = GL_SAMPLER_CUBE_SHADOW ,
1439  UT_SAMPLER_BUFFER = GL_SAMPLER_BUFFER ,
1440  UT_SAMPLER_2D_RECT = GL_SAMPLER_2D_RECT ,
1441  UT_SAMPLER_2D_RECT_SHADOW = GL_SAMPLER_2D_RECT_SHADOW ,
1442  UT_INT_SAMPLER_1D = GL_INT_SAMPLER_1D ,
1443  UT_INT_SAMPLER_2D = GL_INT_SAMPLER_2D ,
1444  UT_INT_SAMPLER_3D = GL_INT_SAMPLER_3D ,
1445  UT_INT_SAMPLER_CUBE = GL_INT_SAMPLER_CUBE ,
1446  UT_INT_SAMPLER_1D_ARRAY = GL_INT_SAMPLER_1D_ARRAY ,
1447  UT_INT_SAMPLER_2D_ARRAY = GL_INT_SAMPLER_2D_ARRAY ,
1448  UT_INT_SAMPLER_2D_MULTISAMPLE = GL_INT_SAMPLER_2D_MULTISAMPLE ,
1449  UT_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY ,
1450  UT_INT_SAMPLER_BUFFER = GL_INT_SAMPLER_BUFFER ,
1451  UT_INT_SAMPLER_2D_RECT = GL_INT_SAMPLER_2D_RECT ,
1452  UT_UNSIGNED_INT_SAMPLER_1D = GL_UNSIGNED_INT_SAMPLER_1D ,
1453  UT_UNSIGNED_INT_SAMPLER_2D = GL_UNSIGNED_INT_SAMPLER_2D ,
1454  UT_UNSIGNED_INT_SAMPLER_3D = GL_UNSIGNED_INT_SAMPLER_3D ,
1455  UT_UNSIGNED_INT_SAMPLER_CUBE = GL_UNSIGNED_INT_SAMPLER_CUBE ,
1456  UT_UNSIGNED_INT_SAMPLER_1D_ARRAY = GL_UNSIGNED_INT_SAMPLER_1D_ARRAY ,
1457  UT_UNSIGNED_INT_SAMPLER_2D_ARRAY = GL_UNSIGNED_INT_SAMPLER_2D_ARRAY ,
1458  UT_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE ,
1459  UT_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY ,
1460  UT_UNSIGNED_INT_SAMPLER_BUFFER = GL_UNSIGNED_INT_SAMPLER_BUFFER ,
1461  UT_UNSIGNED_INT_SAMPLER_2D_RECT = GL_UNSIGNED_INT_SAMPLER_2D_RECT ,
1462 
1464 
1465  } EUniformType;
1466 
1468  typedef enum
1469  {
1470  AT_FLOAT = GL_FLOAT,
1471  AT_FLOAT_VEC2 = GL_FLOAT_VEC2,
1472  AT_FLOAT_VEC3 = GL_FLOAT_VEC3,
1473  AT_FLOAT_VEC4 = GL_FLOAT_VEC4,
1474  AT_FLOAT_MAT2 = GL_FLOAT_MAT2,
1475  AT_FLOAT_MAT3 = GL_FLOAT_MAT3,
1476  AT_FLOAT_MAT4 = GL_FLOAT_MAT4,
1477  AT_FLOAT_MAT2x3 = GL_FLOAT_MAT2x3,
1478  AT_FLOAT_MAT2x4 = GL_FLOAT_MAT2x4,
1479  AT_FLOAT_MAT3x2 = GL_FLOAT_MAT3x2,
1480  AT_FLOAT_MAT3x4 = GL_FLOAT_MAT3x4,
1481  AT_FLOAT_MAT4x2 = GL_FLOAT_MAT4x2,
1482  AT_FLOAT_MAT4x3 = GL_FLOAT_MAT4x3,
1483  AT_INT = GL_INT,
1484  AT_INT_VEC2 = GL_INT_VEC2,
1485  AT_INT_VEC3 = GL_INT_VEC3,
1486  AT_INT_VEC4 = GL_INT_VEC4,
1487  AT_UNSIGNED_INT = GL_UNSIGNED_INT,
1488  AT_UNSIGNED_INT_VEC2 = GL_UNSIGNED_INT_VEC2,
1489  AT_UNSIGNED_INT_VEC3 = GL_UNSIGNED_INT_VEC3,
1490  AT_UNSIGNED_INT_VEC4 = GL_UNSIGNED_INT_VEC4,
1491  AT_DOUBLE = GL_DOUBLE,
1492  AT_DOUBLE_VEC2 = GL_DOUBLE_VEC2,
1493  AT_DOUBLE_VEC3 = GL_DOUBLE_VEC3,
1494  AT_DOUBLE_VEC4 = GL_DOUBLE_VEC4,
1495  AT_DOUBLE_MAT2 = GL_DOUBLE_MAT2,
1496  AT_DOUBLE_MAT3 = GL_DOUBLE_MAT3,
1497  AT_DOUBLE_MAT4 = GL_DOUBLE_MAT4,
1498  AT_DOUBLE_MAT2x3 = GL_DOUBLE_MAT2x3,
1499  AT_DOUBLE_MAT2x4 = GL_DOUBLE_MAT2x4,
1500  AT_DOUBLE_MAT3x2 = GL_DOUBLE_MAT3x2,
1501  AT_DOUBLE_MAT3x4 = GL_DOUBLE_MAT3x4,
1502  AT_DOUBLE_MAT4x2 = GL_DOUBLE_MAT4x2,
1503  AT_DOUBLE_MAT4x3 = GL_DOUBLE_MAT4x3,
1504 
1505  } EAttributeType;
1506 
1507  typedef enum
1508  {
1514 
1515  typedef enum
1516  {
1520 
1521  typedef enum
1522  {
1525 
1528 
1531 
1535 
1536  typedef enum
1537  {
1540  } EShaderCopyMode;
1541 
1542  typedef enum
1543  {
1547 
1548  typedef enum {
1552  } EOpenGLProfile;
1553 }
1554 
1555 
1556 #endif
EInheritance
EAttachmentPoint
EShaderCopyMode
A shader that is intended to run on the programmable geometry processor.
A shader that is intended to run on the programmable vertex processor.
If enabled, clip geometry against user-defined half space #7.
A shader that is intended to run on the programmable fragment processor.
If enabled, clip geometry against user-defined half space #1.
Not supported under OpenGL ES 1.x.
EColorBufferFormat
Color-renderable formats as defined in section 4.4.4 of opengl api specs 4.1.
Projection matrix generated by mat4::getPerspective() or similar.
ERenderState
If enabled, do depth comparisons and update the depth buffer; Note that even if the depth buffer exis...
EPolygonFace
ETexEnvMode
EShadeModel
Data is specified once and used at most a few times as the source of drawing and image specification ...
EStencilBufferFormat
< No log information is generated.
ETexParamFilter
ETexGenMode
Texture generation modes, see also http://www.opengl.org/sdk/docs/man/xhtml/glTexGen.xml for more information.
Discards the local buffer on RAM and updates the BufferObject only if it is marked as dirty...
If enabled, use the current polygon stipple pattern when rendering polygons, see also PolygonStipple...
If enabled, use the current lighting parameters to compute the vertex color; Otherwise, simply associate the current color with each vertex, see also Material, LightModel, and Light.
Data will be sent using glVertexAttribIPointer(), that is, values are always left as integer values...
Data is copied once from an OpenGL buffer and is used at most a few times by the application as data ...
Discards the local buffer on RAM and updates the BufferObject always, even if it is not marked as dir...
[GL_VERTEX_PROGRAM_POINT_SIZE/GL_PROGRAM_POINT_SIZE] If enabled, and a vertex shader is active...
EColorControl
EDepthStencilBufferFormat
If enabled, blend the incoming RGBA color values with the values in the color buffers, see also BlendFunc for more information.
EPointSpriteCoordOrigin
If enabled, dither color components or indices before they are written to the color buffer...
Data is copied once from an OpenGL buffer and is used many times as the source for drawing or image s...
If enabled, add the secondary color value to the computed fragment color.
EStateType
EOpenGLProfile
EDepthBufferFormat
Data is specified many times and used many times as the source of drawing and image specification com...
EBufferObjectUsage
If enabled, draw points with proper filtering; Otherwise, draw aliased points, see also PointSize...
EStringEncoding
EResetContextStates
EBufferObjectUpdateFlags
< Outputs normal information messages, plus all error messages.
EBufferObjectAccess
EStencilOp
If enabled, an offset is added to depth values of a polygon&#39;s fragments before the depth comparison i...
If enabled, performs alpha testing, see also AlphaFunc for more information.
EUniformType
Uniform types, see also vl::UniformInfo, vl::GLSLProgram, vl::Uniform, http://www.opengl.org/sdk/docs/man4/xhtml/glGetActiveUniform.xml.
ETex2DTarget
If enabled, and if the polygon is rendered in GL_FILL mode, an offset is added to depth values of a p...
EPrimitiveType
EVerbosityLevel
If enabled, clip geometry against user-defined half space #5.
EReadDrawBuffer
Visualization Library main namespace.
Projection matrix generated by mat4::getFrustum() or similar.
Data is copied many times from an OpenGL buffer and is used many times by the application as data val...
Propagates to children; does not override children settings; can be overridden.
Propagates to children; overrides children settings; cannot be overridden.
EProjectionMatrixType
A shader that is intended to run on the programmable tessellation processor in the evaluation stage...
For internal use only.
EColorMaterial
Data will be sent using glVertexAttribLPointer(), that is, it will be associated with a shader attrib...
Does not propagates to children (thus cannot override children settings); can be overridden.
Data is copied once from an OpenGL buffer and is used many times by the application as data values...
EVertexAttribBinding
Default vertex attribute bindings.
Projection matrix generated by mat4::getOrtho() or similar.
Not supported under OpenGL ES 1.x.
If enabled, each sample alpha value is replaced by the maximum representable alpha value...
ETextLayout
ETexCompareMode
The type is implicitly defined by the EImageFormat value, for ex.
ETextAlign
If enabled, clip geometry against user-defined half space #2.
If enabled, draw lines with correct filtering; Otherwise, draw aliased lines, see also LineWidth...
EImageDimension
EDepthSortMode
EBlendFactor
EMouseButton
Data is copied many times from an OpenGL buffer and is used many times as the source for drawing or i...
If enabled, compute a temporary coverage value where each bit is determined by the alpha value at the...
EBlendEquation
If enabled, calculate texture coordinates for points based on texture environment and point parameter...
EClearColorMode
EImageFormat
EBufferObjectUpdateMode
A shader that is intended to run on the programmable tessellation processor in the control stage...
If enabled, apply the currently selected logical operation to the incoming RGBA color and color buffe...
Data will be sent using glVertexAttribPointer(), that is, data will be converted to floating point pr...
EClearFlags
If enabled, clip geometry against user-defined half space #0.
< Outputs critical and runtime error messages.
EImageType
Keeps the local buffer on RAM and updates the BufferObject only if it is marked as dirty...
EBillboardType
ETextureDimension
If enabled, blend a fog color into the post-texturing color, see also Fog.
EFramebufferBind
Does not propagates to children (thus cannot override children settings); cannot be overridden...
EEnable
Constant that enable/disable a specific OpenGL feature, see also Shader, Shader::enable(), Shader::disable(), Shader::isEnabled()
Propagates to children; overrides children settings; can be overridden.
Unknown or other projection type.
ETexParamWrap
If enabled, use multiple fragment samples in computing the final color of a pixel.
If enabled, and a vertex shader is active, it specifies that the GL will choose between front and bac...
< Outputs extra information messages useful for debugging, plus all normal and error messages...
A local copy of the Shaders will be created but the contained render states will be shared...
If enabled, do stencil testing and update the stencil buffer, see also StencilFunc and StencilOp...
EFrontFace
ETexCompareFunc
The Shader pointer will be copied as is.
If enabled, clip geometry against user-defined half space #6.
EAttributeType
GLSLProgram attribute types, see also GLSLProgram::activeAttribs() and http://www.opengl.org/sdk/docs/man4/xhtml/glGetActiveAttrib.xml.
If enabled, cubemap textures are sampled such that when linearly sampling from the border between two...
ETessellationWinding
If enabled, the fragment&#39;s coverage is ANDed with the temporary coverage value; If GL_SAMPLE_COVERAGE...
ETextureFormat
Definition: vlnamespace.hpp:45
For internal use only.
If enabled, draw polygons with proper filtering; Otherwise, draw aliased polygons; For correct antial...
Data is specified once and used many times as the source of drawing or image specification commands...
If enabled, normals are scaled by a scaling factor derived from the modelview matrix; vl::EN_RESCALE_...
Not supported under OpenGL ES 1.x.
EDepthTextureMode
ETexEnvSource
Propagates to children; does not override children settings; cannot be overridden.
EPolygonMode
Data is copied once from an OpenGL buffer and is used at most a few times as the source for drawing o...
ETexEnvOperand
If enabled, normal vectors are scaled to unit length after transformation, see also vl::EN_RESCALE_NO...
If enabled, and if the polygon is rendered in GL_LINE mode, an offset is added to depth values of a p...
EVertexAttribInterpretation
Specifies how the data of a VertexAttribInfo is sent to the OpenGL driver, see also http://www...
If enabled, clip geometry against user-defined half space #3.
If enabled, use the current line stipple pattern when drawing lines, see also LineStipple.
If enabled, cull polygons based on their winding in window coordinates, see also CullFace.
Keeps the local buffer on RAM and updates the BufferObject always, even if it is not marked as dirty...
If enabled, clip geometry against user-defined half space #4.