home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Multimedia / k3d-setup-0.7.11.0.exe / lib / site-packages / OpenGL / GL / glget.py < prev    next >
Encoding:
Python Source  |  2008-12-07  |  21.7 KB  |  454 lines

  1. """Implementation of the special "glGet" functions
  2.  
  3. For comparison, here's what a straightforward implementation looks like:
  4.  
  5.     def glGetDoublev( pname ):
  6.         "Natural writing of glGetDoublev using standard ctypes"
  7.         output = c_double*sizes.get( pname )
  8.         result = output()
  9.         result = platform.OpenGL.glGetDoublev( pname, byref(result) )
  10.         return Numeric.array( result )
  11. """
  12. from OpenGL import platform, arrays, error, wrapper, converters
  13. from OpenGL.raw import GL as simple
  14. import ctypes
  15. GLenum = ctypes.c_uint
  16. GLsize = GLsizei = ctypes.c_int
  17.  
  18. __all__ = (
  19.     'glGetBoolean','glGetBooleanv','glGetInteger','glGetIntegerv',
  20.     'glGetFloat','glGetFloatv','glGetDouble','glGetDoublev',
  21.     'glGetString',
  22.     'glGetLightfv','glGetLightiv',
  23.     'glGetMaterialfv','glGetMaterialiv',
  24.     'glGetPixelMapfv','glGetPixelMapusv','glGetPixelMapuiv',
  25.     'glGetPolygonStipple', 'glGetPolygonStippleub',
  26.     'glGetTexEnviv','glGetTexEnvfv',
  27.     'glGetTexGenfv','glGetTexGeniv','glGetTexGendv',
  28.     'glGetTexLevelParameteriv',
  29.     'glGetTexLevelParameterfv',
  30.     'glGetTexParameterfv',
  31.     'glGetTexParameteriv',
  32. )
  33.  
  34. glGetString = platform.OpenGL.glGetString
  35. glGetString.restype = ctypes.c_char_p
  36. glGetString.__doc__ = """glGetString( constant ) -> Current string value"""
  37.  
  38. GL_GET_SIZES = {
  39.     simple.GL_AUX_BUFFERS                           : (1,),
  40.     simple.GL_CLIP_PLANE0                           : (1,),
  41.     simple.GL_CLIP_PLANE2                           : (1,),
  42.     simple.GL_CLIP_PLANE3                           : (1,),
  43.     simple.GL_CLIP_PLANE4                           : (1,),
  44.     simple.GL_BLEND_COLOR                           : (4,),
  45.     simple.GL_LIGHT0                                : (1,),
  46.     simple.GL_CLIP_PLANE1                           : (1,),
  47.     simple.GL_BLEND_EQUATION                        : (1,),
  48.     simple.GL_STENCIL_BITS                          : (1,),
  49.     simple.GL_LIGHT2                                : (1,),
  50.     simple.GL_MAX_EVAL_ORDER                        : (1,),
  51.     simple.GL_CONVOLUTION_1D                        : (1,),
  52.     simple.GL_CONVOLUTION_2D                        : (1,),
  53.     simple.GL_SEPARABLE_2D                          : (1,),
  54.     simple.GL_LIGHT3                                : (1,),
  55.     simple.GL_LIGHT4                                : (1,),
  56.     simple.GL_POST_CONVOLUTION_RED_SCALE            : (1,),
  57.     simple.GL_POST_CONVOLUTION_GREEN_SCALE          : (1,),
  58.     simple.GL_POST_CONVOLUTION_BLUE_SCALE           : (1,),
  59.     simple.GL_CLIP_PLANE5                           : (1,),
  60.     simple.GL_INDEX_CLEAR_VALUE                     : (1,),
  61.     simple.GL_INDEX_WRITEMASK                       : (1,),
  62.     simple.GL_COLOR_CLEAR_VALUE                     : (4,),
  63.     simple.GL_COLOR_WRITEMASK                       : (4,),
  64.     simple.GL_HISTOGRAM                             : (1,),
  65.     simple.GL_LIGHT6                                : (1,),
  66.     simple.GL_MAP2_INDEX                            : (1,),
  67.     simple.GL_PACK_SWAP_BYTES                       : (1,),
  68.     simple.GL_LIGHT7                                : (1,),
  69.     simple.GL_PIXEL_MAP_I_TO_R_SIZE                 : (1,),
  70.     simple.GL_MINMAX                                : (1,),
  71.     simple.GL_INDEX_MODE                            : (1,),
  72.     simple.GL_RGBA_MODE                             : (1,),
  73.     simple.GL_DOUBLEBUFFER                          : (1,),
  74.     simple.GL_PIXEL_MAP_I_TO_G_SIZE                 : (1,),
  75.     simple.GL_POLYGON_OFFSET_FILL                   : (1,),
  76.     simple.GL_POLYGON_OFFSET_FACTOR                 : (1,),
  77.     simple.GL_POST_COLOR_MATRIX_RED_SCALE           : (1,),
  78.     simple.GL_RESCALE_NORMAL                        : (1,),
  79.     simple.GL_POST_COLOR_MATRIX_GREEN_SCALE         : (1,),
  80.     simple.GL_RENDER_MODE                           : (1,),
  81.     simple.GL_POST_COLOR_MATRIX_BLUE_SCALE          : (1,),
  82.     simple.GL_SCISSOR_BOX                           : (4,),
  83.     simple.GL_TEXTURE_GEN_T                         : (1,),
  84.     simple.GL_POST_COLOR_MATRIX_ALPHA_SCALE         : (1,),
  85.     simple.GL_STENCIL_TEST                          : (1,),
  86.     simple.GL_PERSPECTIVE_CORRECTION_HINT           : (1,),
  87.     simple.GL_POINT_SMOOTH_HINT                     : (1,),
  88.     simple.GL_LINE_SMOOTH_HINT                      : (1,),
  89.     simple.GL_POLYGON_SMOOTH_HINT                   : (1,),
  90.     simple.GL_FOG_HINT                              : (1,),
  91.     simple.GL_POST_COLOR_MATRIX_GREEN_BIAS          : (1,),
  92.     simple.GL_TEXTURE_GEN_S                         : (1,),
  93.     simple.GL_POINT_SMOOTH                          : (1,),
  94.     simple.GL_TEXTURE_GEN_R                         : (1,),
  95.     simple.GL_TEXTURE_GEN_Q                         : (1,),
  96.     simple.GL_SCISSOR_TEST                          : (1,),
  97.     simple.GL_VERTEX_ARRAY                          : (1,),
  98.     simple.GL_POINT_SIZE                            : (1,),
  99.     simple.GL_TEXTURE_BINDING_1D                    : (1,),
  100.     simple.GL_MAX_TEXTURE_SIZE                      : (1,),
  101.     simple.GL_TEXTURE_BINDING_3D                    : (1,),
  102.     simple.GL_PACK_SKIP_IMAGES                      : (1,),
  103.     simple.GL_PACK_IMAGE_HEIGHT                     : (1,),
  104.     simple.GL_ALIASED_POINT_SIZE_RANGE              : (2,),
  105.     simple.GL_ALIASED_LINE_WIDTH_RANGE              : (2,),
  106.     simple.GL_TEXTURE_3D                            : (1,),
  107.     simple.GL_MAX_3D_TEXTURE_SIZE                   : (1,),
  108.     simple.GL_COLOR_MATERIAL_PARAMETER              : (1,),
  109.     simple.GL_NORMAL_ARRAY                          : (1,),
  110.     simple.GL_COLOR_ARRAY                           : (1,),
  111.     simple.GL_INDEX_ARRAY                           : (1,),
  112.     simple.GL_TEXTURE_COORD_ARRAY                   : (1,),
  113.     simple.GL_EDGE_FLAG_ARRAY                       : (1,),
  114.     simple.GL_POINT_SIZE_RANGE                      : (2,),
  115.     simple.GL_VERTEX_ARRAY_TYPE                     : (1,),
  116.     simple.GL_CURRENT_INDEX                         : (1,),
  117.     simple.GL_NORMAL_ARRAY_TYPE                     : (1,),
  118.     simple.GL_NORMAL_ARRAY_STRIDE                   : (1,),
  119.     simple.GL_COLOR_ARRAY_SIZE                      : (1,),
  120.     simple.GL_COLOR_ARRAY_TYPE                      : (1,),
  121.     simple.GL_COLOR_ARRAY_STRIDE                    : (1,),
  122.     simple.GL_DRAW_BUFFER                           : (1,),
  123.     simple.GL_INDEX_ARRAY_TYPE                      : (1,),
  124.     simple.GL_INDEX_ARRAY_STRIDE                    : (1,),
  125.     simple.GL_TEXTURE_COORD_ARRAY_SIZE              : (1,),
  126.     simple.GL_TEXTURE_COORD_ARRAY_TYPE              : (1,),
  127.     simple.GL_TEXTURE_COORD_ARRAY_STRIDE            : (1,),
  128.     simple.GL_EDGE_FLAG_ARRAY_STRIDE                : (1,),
  129.     simple.GL_UNPACK_SWAP_BYTES                     : (1,),
  130.     simple.GL_UNPACK_SKIP_IMAGES                    : (1,),
  131.     simple.GL_VERTEX_ARRAY_STRIDE                   : (1,),
  132.     simple.GL_UNPACK_IMAGE_HEIGHT                   : (1,),
  133.     simple.GL_POINT_SIZE_GRANULARITY                : (1,),
  134.     simple.GL_LIGHT5                                : (1,),
  135.     simple.GL_NAME_STACK_DEPTH                      : (1,),
  136.     simple.GL_READ_BUFFER                           : (1,),
  137.     simple.GL_PACK_ROW_LENGTH                       : (1,),
  138.     simple.GL_PIXEL_MAP_I_TO_I_SIZE                 : (1,),
  139.     simple.GL_COLOR_MATRIX                          : (4, 4),
  140.     simple.GL_COLOR_MATRIX_STACK_DEPTH              : (1,),
  141.     simple.GL_MAX_COLOR_MATRIX_STACK_DEPTH          : (1,),
  142.     simple.GL_PIXEL_MAP_I_TO_B_SIZE                 : (1,),
  143.     simple.GL_PIXEL_MAP_I_TO_A_SIZE                 : (1,),
  144.     simple.GL_PIXEL_MAP_R_TO_R_SIZE                 : (1,),
  145.     simple.GL_PIXEL_MAP_G_TO_G_SIZE                 : (1,),
  146.     simple.GL_PIXEL_MAP_B_TO_B_SIZE                 : (1,),
  147.     simple.GL_PIXEL_MAP_A_TO_A_SIZE                 : (1,),
  148.     simple.GL_POST_COLOR_MATRIX_BLUE_BIAS           : (1,),
  149.     simple.GL_POST_COLOR_MATRIX_ALPHA_BIAS          : (1,),
  150.     simple.GL_PACK_LSB_FIRST                        : (1,),
  151.     simple.GL_POST_CONVOLUTION_RED_BIAS             : (1,),
  152.     simple.GL_LIGHT1                                : (1,),
  153.     simple.GL_POST_CONVOLUTION_GREEN_BIAS           : (1,),
  154.     simple.GL_PACK_SKIP_ROWS                        : (1,),
  155.     simple.GL_POST_CONVOLUTION_BLUE_BIAS            : (1,),
  156.     simple.GL_COLOR_TABLE                           : (1,),
  157.     simple.GL_POST_CONVOLUTION_COLOR_TABLE          : (1,),
  158.     simple.GL_POST_COLOR_MATRIX_COLOR_TABLE         : (1,),
  159.     simple.GL_POST_CONVOLUTION_ALPHA_BIAS           : (1,),
  160.     simple.GL_MAP1_GRID_DOMAIN                      : (2,),
  161.     simple.GL_VERTEX_ARRAY_SIZE                     : (1,),
  162.     simple.GL_ACTIVE_TEXTURE_ARB                    : (1,),
  163.     simple.GL_CLIENT_ACTIVE_TEXTURE_ARB             : (1,),
  164.     simple.GL_MAX_TEXTURE_UNITS_ARB                 : (1,),
  165.     simple.GL_PACK_SKIP_PIXELS                      : (1,),
  166.     simple.GL_MAX_ELEMENTS_VERTICES                 : (1,),
  167.     simple.GL_MAX_ELEMENTS_INDICES                  : (1,),
  168.     simple.GL_MAP2_COLOR_4                          : (1,),
  169.     simple.GL_UNPACK_LSB_FIRST                      : (1,),
  170.     simple.GL_UNPACK_ROW_LENGTH                     : (1,),
  171.     simple.GL_UNPACK_SKIP_ROWS                      : (1,),
  172.     simple.GL_UNPACK_SKIP_PIXELS                    : (1,),
  173.     simple.GL_UNPACK_ALIGNMENT                      : (1,),
  174.     simple.GL_SUBPIXEL_BITS                         : (1,),
  175.     simple.GL_STENCIL_WRITEMASK                     : (1,),
  176.     simple.GL_CURRENT_COLOR                         : (4,),
  177.     simple.GL_AUTO_NORMAL                           : (1,),
  178.     simple.GL_CURRENT_NORMAL                        : (3,),
  179.     simple.GL_CURRENT_TEXTURE_COORDS                : (4,),
  180.     simple.GL_CURRENT_RASTER_COLOR                  : (4,),
  181.     simple.GL_CURRENT_RASTER_INDEX                  : (1,),
  182.     simple.GL_CURRENT_RASTER_TEXTURE_COORDS         : (4,),
  183.     simple.GL_CURRENT_RASTER_POSITION               : (4,),
  184.     simple.GL_CURRENT_RASTER_POSITION_VALID         : (1,),
  185.     simple.GL_CURRENT_RASTER_DISTANCE               : (1,),
  186.     simple.GL_MAP_COLOR                             : (1,),
  187.     simple.GL_MAP_STENCIL                           : (1,),
  188.     simple.GL_INDEX_SHIFT                           : (1,),
  189.     simple.GL_INDEX_OFFSET                          : (1,),
  190.     simple.GL_RED_SCALE                             : (1,),
  191.     simple.GL_RED_BIAS                              : (1,),
  192.     simple.GL_ZOOM_X                                : (1,),
  193.     simple.GL_ZOOM_Y                                : (1,),
  194.     simple.GL_GREEN_SCALE                           : (1,),
  195.     simple.GL_GREEN_BIAS                            : (1,),
  196.     simple.GL_BLUE_SCALE                            : (1,),
  197.     simple.GL_BLUE_BIAS                             : (1,),
  198.     simple.GL_ALPHA_SCALE                           : (1,),
  199.     simple.GL_ALPHA_BIAS                            : (1,),
  200.     simple.GL_DEPTH_SCALE                           : (1,),
  201.     simple.GL_DEPTH_BIAS                            : (1,),
  202.     simple.GL_LINE_SMOOTH                           : (1,),
  203.     simple.GL_LINE_WIDTH                            : (1,),
  204.     simple.GL_LINE_WIDTH_RANGE                      : (2,),
  205.     simple.GL_LINE_WIDTH_GRANULARITY                : (1,),
  206.     simple.GL_LINE_STIPPLE                          : (1,),
  207.     simple.GL_LINE_STIPPLE_PATTERN                  : (1,),
  208.     simple.GL_LINE_STIPPLE_REPEAT                   : (1,),
  209.     simple.GL_MAX_LIST_NESTING                      : (1,),
  210.     simple.GL_PIXEL_MAP_S_TO_S_SIZE                 : (1,),
  211.     simple.GL_MAX_CLIP_PLANES                       : (1,),
  212.     simple.GL_LIST_MODE                             : (1,),
  213.     simple.GL_MAX_LIGHTS                            : (1,),
  214.     simple.GL_LIST_BASE                             : (1,),
  215.     simple.GL_LIST_INDEX                            : (1,),
  216.     simple.GL_MAX_PIXEL_MAP_TABLE                   : (1,),
  217.     simple.GL_MAX_ATTRIB_STACK_DEPTH                : (1,),
  218.     simple.GL_MAX_MODELVIEW_STACK_DEPTH             : (1,),
  219.     simple.GL_MAX_NAME_STACK_DEPTH                  : (1,),
  220.     simple.GL_MAX_PROJECTION_STACK_DEPTH            : (1,),
  221.     simple.GL_MAX_TEXTURE_STACK_DEPTH               : (1,),
  222.     simple.GL_MAX_VIEWPORT_DIMS                     : (2,),
  223.     simple.GL_MAX_CLIENT_ATTRIB_STACK_DEPTH         : (1,),
  224.     simple.GL_POLYGON_MODE                          : (2,),
  225.     simple.GL_POLYGON_SMOOTH                        : (1,),
  226.     simple.GL_POLYGON_STIPPLE                       : (1,),
  227.     simple.GL_EDGE_FLAG                             : (1,),
  228.     simple.GL_CULL_FACE                             : (1,),
  229.     simple.GL_CULL_FACE_MODE                        : (1,),
  230.     simple.GL_FRONT_FACE                            : (1,),
  231.     simple.GL_TEXTURE_2D                            : (1,),
  232.     simple.GL_POLYGON_OFFSET_POINT                  : (1,),
  233.     simple.GL_LIGHTING                              : (1,),
  234.     simple.GL_INDEX_BITS                            : (1,),
  235.     simple.GL_LIGHT_MODEL_TWO_SIDE                  : (1,),
  236.     simple.GL_GREEN_BITS                            : (1,),
  237.     simple.GL_BLUE_BITS                             : (1,),
  238.     simple.GL_ALPHA_BITS                            : (1,),
  239.     simple.GL_DEPTH_BITS                            : (1,),
  240.     simple.GL_COLOR_MATERIAL                        : (1,),
  241.     simple.GL_ACCUM_RED_BITS                        : (1,),
  242.     simple.GL_ACCUM_GREEN_BITS                      : (1,),
  243.     simple.GL_ACCUM_BLUE_BITS                       : (1,),
  244.     simple.GL_ACCUM_ALPHA_BITS                      : (1,),
  245.     simple.GL_FOG                                   : (1,),
  246.     simple.GL_FOG_INDEX                             : (1,),
  247.     simple.GL_FOG_DENSITY                           : (1,),
  248.     simple.GL_FOG_START                             : (1,),
  249.     simple.GL_FOG_END                               : (1,),
  250.     simple.GL_FOG_MODE                              : (1,),
  251.     simple.GL_FOG_COLOR                             : (4,),
  252.     simple.GL_STENCIL_CLEAR_VALUE                   : (1,),
  253.     simple.GL_STENCIL_FUNC                          : (1,),
  254.     simple.GL_DEPTH_RANGE                           : (2,),
  255.     simple.GL_DEPTH_TEST                            : (1,),
  256.     simple.GL_DEPTH_WRITEMASK                       : (1,),
  257.     simple.GL_DEPTH_CLEAR_VALUE                     : (1,),
  258.     simple.GL_DEPTH_FUNC                            : (1,),
  259.     simple.GL_PACK_ALIGNMENT                        : (1,),
  260.     simple.GL_STENCIL_PASS_DEPTH_FAIL               : (1,),
  261.     simple.GL_ACCUM_CLEAR_VALUE                     : (4,),
  262.     simple.GL_STENCIL_PASS_DEPTH_PASS               : (1,),
  263.     simple.GL_STENCIL_REF                           : (1,),
  264.     simple.GL_TEXTURE_1D                            : (1,),
  265.     simple.GL_MAP1_COLOR_4                          : (1,),
  266.     simple.GL_MAP1_INDEX                            : (1,),
  267.     simple.GL_MAP1_NORMAL                           : (1,),
  268.     simple.GL_MAP1_TEXTURE_COORD_1                  : (1,),
  269.     simple.GL_MAP1_TEXTURE_COORD_2                  : (1,),
  270.     simple.GL_MAP1_TEXTURE_COORD_3                  : (1,),
  271.     simple.GL_MAP1_TEXTURE_COORD_4                  : (1,),
  272.     simple.GL_MAP1_VERTEX_3                         : (1,),
  273.     simple.GL_MAP1_VERTEX_4                         : (1,),
  274.     simple.GL_POST_COLOR_MATRIX_RED_BIAS            : (1,),
  275.     simple.GL_STENCIL_VALUE_MASK                    : (1,),
  276.     simple.GL_POLYGON_OFFSET_UNITS                  : (1,),
  277.     simple.GL_MATRIX_MODE                           : (1,),
  278.     simple.GL_NORMALIZE                             : (1,),
  279.     simple.GL_VIEWPORT                              : (4,),
  280.     simple.GL_MODELVIEW_STACK_DEPTH                 : (1,),
  281.     simple.GL_PROJECTION_STACK_DEPTH                : (1,),
  282.     simple.GL_TEXTURE_STACK_DEPTH                   : (1,),
  283.     simple.GL_MODELVIEW_MATRIX                      : (4, 4),
  284.     simple.GL_INDEX_LOGIC_OP                        : (1,),
  285.     simple.GL_POST_CONVOLUTION_ALPHA_SCALE          : (1,),
  286.     simple.GL_FEEDBACK_BUFFER_TYPE                  : (1,),
  287.     simple.GL_ATTRIB_STACK_DEPTH                    : (1,),
  288.     simple.GL_CLIENT_ATTRIB_STACK_DEPTH             : (1,),
  289.     simple.GL_MAP2_NORMAL                           : (1,),
  290.     simple.GL_MAP2_TEXTURE_COORD_1                  : (1,),
  291.     simple.GL_MAP2_TEXTURE_COORD_2                  : (1,),
  292.     simple.GL_MAP2_TEXTURE_COORD_3                  : (1,),
  293.     simple.GL_MAP2_TEXTURE_COORD_4                  : (1,),
  294.     simple.GL_MAP2_VERTEX_3                         : (1,),
  295.     simple.GL_MAP2_VERTEX_4                         : (1,),
  296.     simple.GL_STENCIL_FAIL                          : (1,),
  297.     simple.GL_ALPHA_TEST                            : (1,),
  298.     simple.GL_ALPHA_TEST_FUNC                       : (1,),
  299.     simple.GL_ALPHA_TEST_REF                        : (1,),
  300.     simple.GL_DITHER                                : (1,),
  301.     simple.GL_MAP1_GRID_SEGMENTS                    : (1,),
  302.     simple.GL_MAP2_GRID_DOMAIN                      : (4,),
  303.     simple.GL_MAP2_GRID_SEGMENTS                    : (2,),
  304.     simple.GL_TEXTURE_BINDING_2D                    : (1,),
  305.     simple.GL_TEXTURE_MATRIX                        : (4, 4),
  306.     simple.GL_BLEND_DST                             : (1,),
  307.     simple.GL_BLEND_SRC                             : (1,),
  308.     simple.GL_BLEND                                 : (1,),
  309.     simple.GL_POLYGON_OFFSET_LINE                   : (1,),
  310.     simple.GL_LIGHT_MODEL_LOCAL_VIEWER              : (1,),
  311.     simple.GL_STEREO                                : (1,),
  312.     simple.GL_PROJECTION_MATRIX                     : (4, 4),
  313.     simple.GL_RED_BITS                              : (1,),
  314.     simple.GL_LOGIC_OP_MODE                         : (1,),
  315.     simple.GL_FEEDBACK_BUFFER_SIZE                  : (1,),
  316.     simple.GL_COLOR_LOGIC_OP                        : (1,),
  317.     simple.GL_LIGHT_MODEL_AMBIENT                   : (4,),
  318.     simple.GL_SELECTION_BUFFER_SIZE                 : (1,),
  319.     simple.GL_LIGHT_MODEL_COLOR_CONTROL             : (1,),
  320.     simple.GL_SHADE_MODEL                           : (1,),
  321.     simple.GL_COLOR_MATERIAL_FACE                   : (1,),
  322. }
  323. def addGLGetConstant( constant, arraySize ):
  324.     """Add a glGet* constant to return an output array of correct size"""
  325.     GL_GET_SIZES[ constant ] = arraySize
  326. glGetDouble = glGetDoublev = wrapper.wrapper(simple.glGetDoublev).setOutput(
  327.     "params",GL_GET_SIZES, "pname", 
  328. )
  329. glGetFloat = glGetFloatv = wrapper.wrapper(simple.glGetFloatv).setOutput(
  330.     "params",GL_GET_SIZES, "pname", 
  331. )
  332. glGetBoolean = glGetBooleanv = glGetInteger = glGetIntegerv = wrapper.wrapper(simple.glGetIntegerv).setOutput(
  333.     "params",GL_GET_SIZES, "pname", 
  334. )
  335.  
  336. GL_GET_LIGHT_SIZES = {
  337.     # glGetLightXv
  338.     simple.GL_AMBIENT                               : (4,),
  339.     simple.GL_DIFFUSE                               : (4,),
  340.     simple.GL_SPECULAR                              : (4,),
  341.     simple.GL_POSITION                              : (4,),
  342.     simple.GL_SPOT_DIRECTION                        : (3,),
  343.     simple.GL_SPOT_EXPONENT                         : (1,),
  344.     simple.GL_SPOT_CUTOFF                           : (1,),
  345.     simple.GL_CONSTANT_ATTENUATION                  : (1,),
  346.     simple.GL_LINEAR_ATTENUATION                    : (1,),
  347.     simple.GL_QUADRATIC_ATTENUATION                 : (1,),
  348. } # end of sizes
  349. glGetLightfv = wrapper.wrapper(simple.glGetLightfv).setOutput(
  350.     "params",GL_GET_LIGHT_SIZES, "pname", 
  351. )
  352. glGetLightiv = wrapper.wrapper(simple.glGetLightiv).setOutput(
  353.     "params",GL_GET_LIGHT_SIZES, "pname", 
  354. )
  355.  
  356. GL_GET_MATERIAL_SIZES = {
  357.     simple.GL_AMBIENT: (4,),
  358.     simple.GL_DIFFUSE: (4,),
  359.     simple.GL_SPECULAR: (4,),
  360.     simple.GL_EMISSION: (4,),
  361.     simple.GL_SHININESS: (1,),
  362.     simple.GL_COLOR_INDEXES: (3,)
  363. }
  364. glGetMaterialfv = wrapper.wrapper(simple.glGetMaterialfv).setOutput(
  365.     "params",GL_GET_MATERIAL_SIZES, "pname", 
  366. )
  367. glGetMaterialiv = wrapper.wrapper(simple.glGetMaterialiv).setOutput(
  368.     "params",GL_GET_MATERIAL_SIZES, "pname", 
  369. )
  370. PIXEL_MAP_SIZE_CONSTANT_MAP = {
  371.     simple.GL_PIXEL_MAP_A_TO_A: simple.GL_PIXEL_MAP_A_TO_A_SIZE,
  372.     simple.GL_PIXEL_MAP_B_TO_B: simple.GL_PIXEL_MAP_B_TO_B_SIZE,
  373.     simple.GL_PIXEL_MAP_G_TO_G: simple.GL_PIXEL_MAP_G_TO_G_SIZE,
  374.     simple.GL_PIXEL_MAP_I_TO_A: simple.GL_PIXEL_MAP_I_TO_A_SIZE,
  375.     simple.GL_PIXEL_MAP_I_TO_B: simple.GL_PIXEL_MAP_I_TO_B_SIZE,
  376.     simple.GL_PIXEL_MAP_I_TO_G: simple.GL_PIXEL_MAP_I_TO_G_SIZE,
  377.     simple.GL_PIXEL_MAP_I_TO_I: simple.GL_PIXEL_MAP_I_TO_I_SIZE,
  378.     simple.GL_PIXEL_MAP_I_TO_R: simple.GL_PIXEL_MAP_I_TO_R_SIZE,
  379.     simple.GL_PIXEL_MAP_R_TO_R: simple.GL_PIXEL_MAP_R_TO_R_SIZE,
  380.     simple.GL_PIXEL_MAP_S_TO_S: simple.GL_PIXEL_MAP_S_TO_S_SIZE,
  381. }
  382. def GL_GET_PIXEL_MAP_SIZE( pname ):
  383.     """Given a pname, lookup the size using a glGet query..."""
  384.     constant = PIXEL_MAP_SIZE_CONSTANT_MAP[ pname ]
  385.     return glGetIntegerv( constant )
  386. glGetPixelMapfv = wrapper.wrapper(simple.glGetPixelMapfv).setOutput(
  387.     "values",GL_GET_PIXEL_MAP_SIZE, "map", 
  388. )
  389. glGetPixelMapuiv = wrapper.wrapper(simple.glGetPixelMapuiv).setOutput(
  390.     "values",GL_GET_PIXEL_MAP_SIZE, "map", 
  391. )
  392. glGetPixelMapusv = wrapper.wrapper(simple.glGetPixelMapusv).setOutput(
  393.     "values",GL_GET_PIXEL_MAP_SIZE, "map", 
  394. )
  395.  
  396. # 32 * 32 bits
  397. POLYGON_STIPPLE_SIZE = (32*32/8,)
  398. glGetPolygonStipple = glGetPolygonStippleub = wrapper.wrapper(simple.glGetPolygonStipple).setOutput(
  399.     "mask",POLYGON_STIPPLE_SIZE, 
  400. )
  401. GL_GET_TEX_ENV_SIZES = {
  402.     simple.GL_TEXTURE_ENV_MODE: (1,),
  403.     simple.GL_TEXTURE_ENV_COLOR: (4,),
  404. }
  405. glGetTexEnvfv = wrapper.wrapper(simple.glGetTexEnvfv).setOutput(
  406.     "params",GL_GET_TEX_ENV_SIZES, 'pname',  
  407. )
  408. glGetTexEnviv = wrapper.wrapper(simple.glGetTexEnviv).setOutput(
  409.     "params",GL_GET_TEX_ENV_SIZES, 'pname',  
  410. )
  411. GL_GET_TEX_GEN_SIZES = {
  412.     simple.GL_TEXTURE_GEN_MODE: (1,),
  413.     simple.GL_OBJECT_PLANE: (4,),
  414.     simple.GL_EYE_PLANE: (4,),
  415. }
  416. glGetTexGendv = wrapper.wrapper(simple.glGetTexGendv).setOutput(
  417.     "params",GL_GET_TEX_GEN_SIZES, 'pname',  
  418. )
  419. glGetTexGenfv = wrapper.wrapper(simple.glGetTexGenfv).setOutput(
  420.     "params",GL_GET_TEX_GEN_SIZES, 'pname',  
  421. )
  422. glGetTexGeniv = wrapper.wrapper(simple.glGetTexGeniv).setOutput(
  423.     "params",GL_GET_TEX_GEN_SIZES, 'pname',  
  424. )
  425.  
  426. glGetTexLevelParameterfv = wrapper.wrapper(simple.glGetTexLevelParameterfv).setOutput(
  427.     "params",(1,)
  428. )
  429. glGetTexLevelParameteriv = wrapper.wrapper(simple.glGetTexLevelParameteriv).setOutput(
  430.     "params",(1,)
  431. )
  432. TEX_PARAMETER_SIZES = {
  433.     simple.GL_TEXTURE_MAG_FILTER: (1,),
  434.     simple.GL_TEXTURE_MIN_FILTER: (1,), 
  435.     simple.GL_TEXTURE_MIN_LOD: (1,),
  436.     simple.GL_TEXTURE_MAX_LOD: (1,),
  437.     simple.GL_TEXTURE_BASE_LEVEL: (1,),
  438.     simple.GL_TEXTURE_MAX_LEVEL: (1,),
  439.     simple.GL_TEXTURE_WRAP_S: (1,),
  440.     simple.GL_TEXTURE_WRAP_T: (1,),
  441.     simple.GL_TEXTURE_WRAP_R: (1,),
  442.     simple.GL_TEXTURE_BORDER_COLOR: (4,), 
  443.     simple.GL_TEXTURE_PRIORITY: (1,),
  444.     simple.GL_TEXTURE_RESIDENT: (1,)
  445. }
  446.  
  447. glGetTexParameterfv = wrapper.wrapper(simple.glGetTexParameterfv).setOutput(
  448.     "params",TEX_PARAMETER_SIZES, 'pname',
  449. )
  450. glGetTexParameteriv = wrapper.wrapper(simple.glGetTexParameteriv).setOutput(
  451.     "params",TEX_PARAMETER_SIZES, 'pname',
  452. )
  453.  
  454.