Package glitter :: Package utils :: Module constants
[hide private]
[frames] | no frames]

Source Code for Module glitter.utils.constants

  1  """Constants and enums. 
  2   
  3  @todo: Add internal formats GL_DEPTH_COMPONENT and GL_DEPTH_STENCIL to C{texture_formats}. 
  4   
  5  @author: Stephan Wenger 
  6  @date: 2012-02-29 
  7  """ 
  8   
  9  import glitter.raw as _gl 
 10  from glitter.utils.dtypes import uint8, uint16, uint32, int8, int16, int32, float32 
 11  from glitter.utils.enum import Enum 
 12   
 13  texture_formats = [ 
 14          ((uint8,   1), _gl.GL_R8UI,     (_gl.GL_UNSIGNED_BYTE,  _gl.GL_RED_INTEGER )), 
 15          ((int8,    1), _gl.GL_R8I,      (_gl.GL_BYTE,           _gl.GL_RED_INTEGER )), 
 16          ((uint16,  1), _gl.GL_R16UI,    (_gl.GL_UNSIGNED_SHORT, _gl.GL_RED_INTEGER )), 
 17          ((int16,   1), _gl.GL_R16I,     (_gl.GL_SHORT,          _gl.GL_RED_INTEGER )), 
 18          ((uint32,  1), _gl.GL_R32UI,    (_gl.GL_UNSIGNED_INT,   _gl.GL_RED_INTEGER )), 
 19          ((int32,   1), _gl.GL_R32I,     (_gl.GL_INT,            _gl.GL_RED_INTEGER )), 
 20          ((float32, 1), _gl.GL_R32F,     (_gl.GL_FLOAT,          _gl.GL_RED         )), 
 21          ((uint8,   2), _gl.GL_RG8UI,    (_gl.GL_UNSIGNED_BYTE,  _gl.GL_RG_INTEGER  )), 
 22          ((int8,    2), _gl.GL_RG8I,     (_gl.GL_BYTE,           _gl.GL_RG_INTEGER  )), 
 23          ((uint16,  2), _gl.GL_RG16UI,   (_gl.GL_UNSIGNED_SHORT, _gl.GL_RG_INTEGER  )), 
 24          ((int16,   2), _gl.GL_RG16I,    (_gl.GL_SHORT,          _gl.GL_RG_INTEGER  )), 
 25          ((uint32,  2), _gl.GL_RG32UI,   (_gl.GL_UNSIGNED_INT,   _gl.GL_RG_INTEGER  )), 
 26          ((int32,   2), _gl.GL_RG32I,    (_gl.GL_INT,            _gl.GL_RG_INTEGER  )), 
 27          ((float32, 2), _gl.GL_RG32F,    (_gl.GL_FLOAT,          _gl.GL_RG          )), 
 28          ((uint8,   3), _gl.GL_RGB8UI,   (_gl.GL_UNSIGNED_BYTE,  _gl.GL_RGB_INTEGER )), 
 29          ((int8,    3), _gl.GL_RGB8I,    (_gl.GL_BYTE,           _gl.GL_RGB_INTEGER )), 
 30          ((uint16,  3), _gl.GL_RGB16UI,  (_gl.GL_UNSIGNED_SHORT, _gl.GL_RGB_INTEGER )), 
 31          ((int16,   3), _gl.GL_RGB16I,   (_gl.GL_SHORT,          _gl.GL_RGB_INTEGER )), 
 32          ((uint32,  3), _gl.GL_RGB32UI,  (_gl.GL_UNSIGNED_INT,   _gl.GL_RGB_INTEGER )), 
 33          ((int32,   3), _gl.GL_RGB32I,   (_gl.GL_INT,            _gl.GL_RGB_INTEGER )), 
 34          ((float32, 3), _gl.GL_RGB32F,   (_gl.GL_FLOAT,          _gl.GL_RGB         )), 
 35          ((uint8,   4), _gl.GL_RGBA8UI,  (_gl.GL_UNSIGNED_BYTE,  _gl.GL_RGBA_INTEGER)), 
 36          ((int8,    4), _gl.GL_RGBA8I,   (_gl.GL_BYTE,           _gl.GL_RGBA_INTEGER)), 
 37          ((uint16,  4), _gl.GL_RGBA16UI, (_gl.GL_UNSIGNED_SHORT, _gl.GL_RGBA_INTEGER)), 
 38          ((int16,   4), _gl.GL_RGBA16I,  (_gl.GL_SHORT,          _gl.GL_RGBA_INTEGER)), 
 39          ((uint32,  4), _gl.GL_RGBA32UI, (_gl.GL_UNSIGNED_INT,   _gl.GL_RGBA_INTEGER)), 
 40          ((int32,   4), _gl.GL_RGBA32I,  (_gl.GL_INT,            _gl.GL_RGBA_INTEGER)), 
 41          ((float32, 4), _gl.GL_RGBA32F,  (_gl.GL_FLOAT,          _gl.GL_RGBA        )), 
 42          ] 
 43  """Mapping between C{numpy} types and OpenGL types. 
 44   
 45  First column: C{numpy} datatype, number of color channels 
 46  Second column: OpenGL internal format 
 47  Third column: OpenGL type, OpenGL format 
 48  """ 
 49   
 50  dtype_to_gl_iformat =   dict((x[0],    x[1]   ) for x in texture_formats) 
 51  gl_iformat_to_dtype =   dict((x[1],    x[0]   ) for x in texture_formats) 
 52  dtype_to_gl_format =    dict((x[0],    x[2][1]) for x in texture_formats) 
 53  gl_format_to_dtype =    dict((x[2][1], x[0]   ) for x in texture_formats) 
 54  gl_iformat_to_gl_type = dict((x[1],    x[2][0]) for x in texture_formats) 
 55   
 56  texture_compare_funcs = Enum( 
 57          LEQUAL=_gl.GL_LEQUAL, 
 58          GEQUAL=_gl.GL_GEQUAL, 
 59          LESS=_gl.GL_LESS, 
 60          GREATER=_gl.GL_GREATER, 
 61          EQUAL=_gl.GL_EQUAL, 
 62          NOTEQUAL=_gl.GL_NOTEQUAL, 
 63          ALWAYS=_gl.GL_ALWAYS, 
 64          NEVER=_gl.GL_NEVER, 
 65          ) 
 66   
 67  texture_compare_modes = Enum( 
 68          COMPARE_REF_TO_TEXTURE=_gl.GL_COMPARE_REF_TO_TEXTURE, 
 69          NONE=_gl.GL_NONE, 
 70          ) 
 71   
 72  texture_min_filters = Enum( 
 73          NEAREST=_gl.GL_NEAREST, 
 74          LINEAR=_gl.GL_LINEAR, 
 75          NEAREST_MIPMAP_NEAREST=_gl.GL_NEAREST_MIPMAP_NEAREST, 
 76          LINEAR_MIPMAP_NEAREST=_gl.GL_LINEAR_MIPMAP_NEAREST, 
 77          NEAREST_MIPMAP_LINEAR=_gl.GL_NEAREST_MIPMAP_LINEAR, 
 78          LINEAR_MIPMAP_LINEAR=_gl.GL_LINEAR_MIPMAP_LINEAR, 
 79          ) 
 80   
 81  texture_mag_filters = Enum( 
 82          NEAREST=_gl.GL_NEAREST, 
 83          LINEAR=_gl.GL_LINEAR, 
 84          ) 
 85   
 86  texture_swizzles = Enum( 
 87          RED=_gl.GL_RED, 
 88          GREEN=_gl.GL_GREEN, 
 89          BLUE=_gl.GL_BLUE, 
 90          ALPHA=_gl.GL_ALPHA, 
 91          ZERO=_gl.GL_ZERO, 
 92          ONE=_gl.GL_ONE, 
 93          ) 
 94   
 95  texture_wrapmodes = Enum( 
 96          CLAMP_TO_EDGE=_gl.GL_CLAMP_TO_EDGE, 
 97          CLAMP_TO_BORDER=_gl.GL_CLAMP_TO_BORDER, 
 98          MIRRORED_REPEAT=_gl.GL_MIRRORED_REPEAT, 
 99          REPEAT=_gl.GL_REPEAT, 
100          ) 
101   
102  primitive_types = Enum( 
103          POINTS=_gl.GL_POINTS, 
104          LINE_STRIP=_gl.GL_LINE_STRIP, 
105          LINE_LOOP=_gl.GL_LINE_LOOP, 
106          LINES=_gl.GL_LINES, 
107          LINE_STRIP_ADJACENCY=_gl.GL_LINE_STRIP_ADJACENCY, 
108          LINES_ADJACENCY=_gl.GL_LINES_ADJACENCY, 
109          TRIANGLE_STRIP=_gl.GL_TRIANGLE_STRIP, 
110          TRIANGLE_FAN=_gl.GL_TRIANGLE_FAN, 
111          TRIANGLES=_gl.GL_TRIANGLES, 
112          TRIANGLE_STRIP_ADJACENCY=_gl.GL_TRIANGLE_STRIP_ADJACENCY, 
113          TRIANGLES_ADJACENCY=_gl.GL_TRIANGLES_ADJACENCY, 
114          PATCHES=_gl.GL_PATCHES, 
115          ) 
116   
117  buffer_usages = Enum( 
118          STREAM_DRAW=_gl.GL_STREAM_DRAW, 
119          STREAM_READ=_gl.GL_STREAM_READ, 
120          STREAM_COPY=_gl.GL_STREAM_COPY, 
121          STATIC_DRAW=_gl.GL_STATIC_DRAW, 
122          STATIC_READ=_gl.GL_STATIC_READ, 
123          STATIC_COPY=_gl.GL_STATIC_COPY, 
124          DYNAMIC_DRAW=_gl.GL_DYNAMIC_DRAW, 
125          DYNAMIC_READ=_gl.GL_DYNAMIC_READ, 
126          DYNAMIC_COPY=_gl.GL_DYNAMIC_COPY, 
127          ) 
128   
129  buffer_dimensions_to_primitive = {1: primitive_types.POINTS, 2: primitive_types.LINES, 3: primitive_types.TRIANGLES} 
130  primitive_to_buffer_dimensions = {primitive_types.POINTS: 1, primitive_types.LINES: 2, primitive_types.TRIANGLES: 3} 
131   
132  blend_functions = Enum( 
133          ZERO=_gl.GL_ZERO, 
134          ONE=_gl.GL_ONE, 
135          SRC_COLOR=_gl.GL_SRC_COLOR, 
136          ONE_MINUS_SRC_COLOR=_gl.GL_ONE_MINUS_SRC_COLOR, 
137          DST_COLOR=_gl.GL_DST_COLOR, 
138          ONE_MINUS_DST_COLOR=_gl.GL_ONE_MINUS_DST_COLOR, 
139          SRC_ALPHA=_gl.GL_SRC_ALPHA, 
140          ONE_MINUS_SRC_ALPHA=_gl.GL_ONE_MINUS_SRC_ALPHA, 
141          DST_ALPHA=_gl.GL_DST_ALPHA, 
142          ONE_MINUS_DST_ALPHA=_gl.GL_ONE_MINUS_DST_ALPHA, 
143          CONSTANT_COLOR=_gl.GL_CONSTANT_COLOR, 
144          ONE_MINUS_CONSTANT_COLOR=_gl.GL_ONE_MINUS_CONSTANT_COLOR, 
145          CONSTANT_ALPHA=_gl.GL_CONSTANT_ALPHA, 
146          ONE_MINUS_CONSTANT_ALPHA=_gl.GL_ONE_MINUS_CONSTANT_ALPHA, 
147          SRC_ALPHA_SATURATE=_gl.GL_SRC_ALPHA_SATURATE, 
148  ) 
149   
150  blend_equations = Enum( 
151          ADD=_gl.GL_FUNC_ADD, 
152          SUBTRACT=_gl.GL_FUNC_SUBTRACT, 
153          REVERSE_SUBTRACT=_gl.GL_FUNC_REVERSE_SUBTRACT, 
154          MIN=_gl.GL_MIN, 
155          MAX=_gl.GL_MAX, 
156  ) 
157   
158  depth_functions = Enum( 
159          NEVER=_gl.GL_NEVER, 
160          LESS=_gl.GL_LESS, 
161          EQUAL=_gl.GL_EQUAL, 
162          LEQUAL=_gl.GL_LEQUAL, 
163          GREATER=_gl.GL_GREATER, 
164          NOTEQUAL=_gl.GL_NOTEQUAL, 
165          GEQUAL=_gl.GL_GEQUAL, 
166          ALWAYS=_gl.GL_ALWAYS, 
167  ) 
168   
169  draw_buffers = Enum( 
170          NONE=_gl.GL_NONE, 
171          FRONT_LEFT=_gl.GL_FRONT_LEFT, 
172          FRONT_RIGHT=_gl.GL_FRONT_RIGHT, 
173          BACK_LEFT=_gl.GL_BACK_LEFT, 
174          BACK_RIGHT=_gl.GL_BACK_RIGHT, 
175          FRONT=_gl.GL_FRONT, 
176          BACK=_gl.GL_BACK, 
177          LEFT=_gl.GL_LEFT, 
178          RIGHT=_gl.GL_RIGHT, 
179          FRONT_AND_BACK=_gl.GL_FRONT_AND_BACK, 
180  ) 
181  for key, value in _gl.__dict__.items(): 
182      if key.startswith("GL_COLOR_ATTACHMENT"): 
183          draw_buffers._add(key[3:], value) 
184   
185  hints = Enum( 
186          FASTEST=_gl.GL_FASTEST, 
187          NICEST=_gl.GL_NICEST, 
188          DONT_CARE=_gl.GL_DONT_CARE, 
189  ) 
190   
191  provoking_vertices = Enum( 
192          PROVOKING=_gl.GL_PROVOKING_VERTEX, 
193          FIRST=_gl.GL_FIRST_VERTEX_CONVENTION, 
194          LAST=_gl.GL_LAST_VERTEX_CONVENTION, 
195          UNDEFINED=_gl.GL_UNDEFINED_VERTEX, 
196  ) 
197   
198  logic_op_modes = Enum( 
199          CLEAR=_gl.GL_CLEAR, 
200          SET=_gl.GL_SET, 
201          COPY=_gl.GL_COPY, 
202          COPY_INVERTED=_gl.GL_COPY_INVERTED, 
203          NOOP=_gl.GL_NOOP, 
204          INVERT=_gl.GL_INVERT, 
205          AND=_gl.GL_AND, 
206          NAND=_gl.GL_NAND, 
207          OR=_gl.GL_OR, 
208          NOR=_gl.GL_NOR, 
209          XOR=_gl.GL_XOR, 
210          EQUIV=_gl.GL_EQUIV, 
211          AND_REVERSE=_gl.GL_AND_REVERSE, 
212          AND_INVERTED=_gl.GL_AND_INVERTED, 
213          OR_REVERSE=_gl.GL_OR_REVERSE, 
214          OR_INVERTED=_gl.GL_OR_INVERTED, 
215  ) 
216   
217  provoke_modes = Enum( 
218          FIRST_VERTEX_CONVENTION=_gl.GL_FIRST_VERTEX_CONVENTION, 
219          LAST_VERTEX_CONVENTION=_gl.GL_LAST_VERTEX_CONVENTION, 
220  ) 
221   
222  color_read_formats = Enum( 
223          STENCIL_INDEX=_gl.GL_STENCIL_INDEX, 
224          DEPTH_COMPONENT=_gl.GL_DEPTH_COMPONENT, 
225          DEPTH_STENCIL=_gl.GL_DEPTH_STENCIL, 
226          RED=_gl.GL_RED, 
227          GREEN=_gl.GL_GREEN, 
228          BLUE=_gl.GL_BLUE, 
229          RGB=_gl.GL_RGB, 
230          BGR=_gl.GL_BGR, 
231          RGBA=_gl.GL_RGBA, 
232          BGRA=_gl.GL_BGRA, 
233  ) 
234   
235  color_read_types = Enum( 
236          UNSIGNED_BYTE=_gl.GL_UNSIGNED_BYTE, 
237          BYTE=_gl.GL_BYTE, 
238          UNSIGNED_SHORT=_gl.GL_UNSIGNED_SHORT, 
239          SHORT=_gl.GL_SHORT, 
240          UNSIGNED_INT=_gl.GL_UNSIGNED_INT, 
241          INT=_gl.GL_INT, 
242          HALF_FLOAT=_gl.GL_HALF_FLOAT, 
243          FLOAT=_gl.GL_FLOAT, 
244          UNSIGNED_BYTE_3_3_2=_gl.GL_UNSIGNED_BYTE_3_3_2, 
245          UNSIGNED_BYTE_2_3_3_REV=_gl.GL_UNSIGNED_BYTE_2_3_3_REV, 
246          UNSIGNED_SHORT_5_6_5=_gl.GL_UNSIGNED_SHORT_5_6_5, 
247          UNSIGNED_SHORT_5_6_5_REV=_gl.GL_UNSIGNED_SHORT_5_6_5_REV, 
248          UNSIGNED_SHORT_4_4_4_4=_gl.GL_UNSIGNED_SHORT_4_4_4_4, 
249          UNSIGNED_SHORT_4_4_4_4_REV=_gl.GL_UNSIGNED_SHORT_4_4_4_4_REV, 
250          UNSIGNED_SHORT_5_5_5_1=_gl.GL_UNSIGNED_SHORT_5_5_5_1, 
251          UNSIGNED_SHORT_1_5_5_5_REV=_gl.GL_UNSIGNED_SHORT_1_5_5_5_REV, 
252          UNSIGNED_INT_8_8_8_8=_gl.GL_UNSIGNED_INT_8_8_8_8, 
253          UNSIGNED_INT_8_8_8_8_REV=_gl.GL_UNSIGNED_INT_8_8_8_8_REV, 
254          UNSIGNED_INT_10_10_10_2=_gl.GL_UNSIGNED_INT_10_10_10_2, 
255          UNSIGNED_INT_2_10_10_10_REV=_gl.GL_UNSIGNED_INT_2_10_10_10_REV, 
256          UNSIGNED_INT_24_8=_gl.GL_UNSIGNED_INT_24_8, 
257          UNSIGNED_INT_10F_11F_11F_REV=_gl.GL_UNSIGNED_INT_10F_11F_11F_REV, 
258          UNSIGNED_INT_5_9_9_9_REV=_gl.GL_UNSIGNED_INT_5_9_9_9_REV, 
259          FLOAT_32_UNSIGNED_INT_24_8_REV=_gl.GL_FLOAT_32_UNSIGNED_INT_24_8_REV, 
260  ) 
261   
262  read_buffers = Enum( 
263          NONE=_gl.GL_NONE, 
264          FRONT_LEFT=_gl.GL_FRONT_LEFT, 
265          FRONT_RIGHT=_gl.GL_FRONT_RIGHT, 
266          BACK_LEFT=_gl.GL_BACK_LEFT, 
267          BACK_RIGHT=_gl.GL_BACK_RIGHT, 
268          FRONT=_gl.GL_FRONT, 
269          BACK=_gl.GL_BACK, 
270          LEFT=_gl.GL_LEFT, 
271          RIGHT=_gl.GL_RIGHT, 
272  ) 
273  for key, value in _gl.__dict__.items(): 
274      if key.startswith("GL_COLOR_ATTACHMENT"): 
275          read_buffers._add(key[3:], value) 
276   
277  transform_feedback_buffer_modes = Enum( 
278          SEPARATE_ATTRIBS=_gl.GL_SEPARATE_ATTRIBS, 
279          INTERLEAVED_ATTRIBS=_gl.GL_INTERLEAVED_ATTRIBS, 
280  ) 
281   
282  client_wait_sync_returns = Enum( 
283          ALREADY_SIGNALED=_gl.GL_ALREADY_SIGNALED, 
284          TIMEOUT_EXPIRED=_gl.GL_TIMEOUT_EXPIRED, 
285          CONDITION_SATISFIED=_gl.GL_CONDITION_SATISFIED, 
286          WAIT_FAILED=_gl.GL_WAIT_FAILED, 
287  ) 
288   
289  framebuffer_status = Enum( 
290      COMPLETE=_gl.GL_FRAMEBUFFER_COMPLETE, 
291      UNDEFINED=_gl.GL_FRAMEBUFFER_UNDEFINED, 
292      UNSUPPORTED=_gl.GL_FRAMEBUFFER_UNSUPPORTED, 
293      INCOMPLETE_ATTACHMENT=_gl.GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT, 
294      INCOMPLETE_MISSING_ATTACHMENT=_gl.GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT, 
295      INCOMPLETE_DRAW_BUFFER=_gl.GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER, 
296      INCOMPLETE_READ_BUFFER=_gl.GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER, 
297      INCOMPLETE_MULTISAMPLE=_gl.GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, 
298      INCOMPLETE_LAYER_TARGETS=_gl.GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS, 
299  ) 
300   
301  cull_face_modes = Enum( 
302      FRONT=_gl.GL_FRONT, 
303      BACK=_gl.GL_BACK, 
304      FRONT_AND_BACK=_gl.GL_FRONT_AND_BACK, 
305  ) 
306   
307  front_face_modes = Enum( 
308      CW=_gl.GL_CW, 
309      CCW=_gl.GL_CCW, 
310  ) 
311   
312  polygon_modes = Enum( 
313      POINT=_gl.GL_POINT, 
314      LINE=_gl.GL_LINE, 
315      FILL=_gl.GL_FILL, 
316  ) 
317   
318  __all__ = [ 
319      "texture_formats", 
320      "dtype_to_gl_iformat", 
321      "gl_iformat_to_dtype", 
322      "dtype_to_gl_format", 
323      "gl_format_to_dtype", 
324      "gl_iformat_to_gl_type", 
325      "texture_compare_funcs", 
326      "texture_compare_modes", 
327      "texture_min_filters", 
328      "texture_mag_filters", 
329      "texture_swizzles", 
330      "texture_wrapmodes", 
331      "primitive_types", 
332      "buffer_usages", 
333      "buffer_dimensions_to_primitive", 
334      "primitive_to_buffer_dimensions", 
335      "blend_functions", 
336      "blend_equations", 
337      "depth_functions", 
338      "draw_buffers", 
339      "hints", 
340      "provoking_vertices", 
341      "logic_op_modes", 
342      "provoke_modes", 
343      "color_read_formats", 
344      "color_read_types", 
345      "read_buffers", 
346      "transform_feedback_buffer_modes", 
347      "client_wait_sync_returns", 
348      "framebuffer_status", 
349      "cull_face_modes", 
350      "front_face_modes", 
351      "polygon_modes", 
352  ] 
353