-- #hide -------------------------------------------------------------------------------- -- | -- Module : Graphics.Rendering.OpenGL.GL.QueryUtils -- Copyright : (c) Sven Panne 2002-2009 -- License : BSD-style (see the file libraries/OpenGL/LICENSE) -- -- Maintainer : sven.panne@aedion.de -- Stability : stable -- Portability : portable -- -- This is a purely internal module with utilities to query OpenGL state. -- -------------------------------------------------------------------------------- module Graphics.Rendering.OpenGL.GL.QueryUtils ( GetPName(..), clipPlaneIndexToEnum, lightIndexToEnum, modelviewIndexToEnum, modelviewEnumToIndex, getBoolean1, getBoolean4, getInteger1, getInteger2, getInteger4, getIntegerv, getEnum1, getSizei1, getSizei2, getFloat1, getFloat2, getFloat3, getFloat4, getFloatv, getClampf1, getClampf4, getDouble1, getDouble2, getDouble4, getDoublev, getClampd1, getClampd2, maybeNullPtr, AttribLocation(..), GetVertexAttribPName(..), getVertexAttribInteger1, getVertexAttribEnum1, getVertexAttribBoolean1, getVertexAttribFloat4, getVertexAttribIInteger4, getVertexAttribIuInteger4, GetVertexAttribPointerPName(..), getVertexAttribPointer ) where import Foreign.Marshal.Alloc import Foreign.Marshal.Array import Foreign.Ptr import Foreign.Storable import Graphics.Rendering.OpenGL.GL.PeekPoke import Graphics.Rendering.OpenGL.GLU.ErrorsInternal import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility ( gl_ACCUM_ALPHA_BITS, gl_ACCUM_BLUE_BITS, gl_ACCUM_CLEAR_VALUE, gl_ACCUM_GREEN_BITS, gl_ACCUM_RED_BITS, gl_ALIASED_POINT_SIZE_RANGE, gl_ALPHA_BIAS, gl_ALPHA_BITS, gl_ALPHA_SCALE, gl_ALPHA_TEST, gl_ALPHA_TEST_FUNC, gl_ALPHA_TEST_REF, gl_ATTRIB_STACK_DEPTH, gl_AUTO_NORMAL, gl_AUX_BUFFERS, gl_BLUE_BIAS, gl_BLUE_BITS, gl_BLUE_SCALE, gl_CLIENT_ACTIVE_TEXTURE, gl_CLIENT_ATTRIB_STACK_DEPTH, gl_COLOR_ARRAY, gl_COLOR_ARRAY_BUFFER_BINDING, gl_COLOR_ARRAY_SIZE, gl_COLOR_ARRAY_STRIDE, gl_COLOR_ARRAY_TYPE, gl_COLOR_MATERIAL, gl_COLOR_MATERIAL_FACE, gl_COLOR_MATERIAL_PARAMETER, gl_COLOR_MATRIX, gl_COLOR_MATRIX_STACK_DEPTH, gl_COLOR_SUM, gl_COLOR_TABLE, gl_CONVOLUTION_1D, gl_CONVOLUTION_2D, gl_CURRENT_COLOR, gl_CURRENT_FOG_COORD, gl_CURRENT_INDEX, gl_CURRENT_NORMAL, gl_CURRENT_RASTER_COLOR, gl_CURRENT_RASTER_DISTANCE, gl_CURRENT_RASTER_INDEX, gl_CURRENT_RASTER_POSITION, gl_CURRENT_RASTER_POSITION_VALID, gl_CURRENT_RASTER_SECONDARY_COLOR, gl_CURRENT_RASTER_TEXTURE_COORDS, gl_CURRENT_SECONDARY_COLOR, gl_CURRENT_TEXTURE_COORDS, gl_DEPTH_BIAS, gl_DEPTH_BITS, gl_DEPTH_SCALE, gl_EDGE_FLAG, gl_EDGE_FLAG_ARRAY, gl_EDGE_FLAG_ARRAY_BUFFER_BINDING, gl_EDGE_FLAG_ARRAY_STRIDE, gl_FEEDBACK_BUFFER_SIZE, gl_FEEDBACK_BUFFER_TYPE, gl_FOG, gl_FOG_COLOR, gl_FOG_COORD_ARRAY, gl_FOG_COORD_ARRAY_BUFFER_BINDING, gl_FOG_COORD_ARRAY_STRIDE, gl_FOG_COORD_ARRAY_TYPE, gl_FOG_COORD_SRC, gl_FOG_DENSITY, gl_FOG_END, gl_FOG_HINT, gl_FOG_INDEX, gl_FOG_MODE, gl_FOG_START, gl_GENERATE_MIPMAP_HINT, gl_GREEN_BIAS, gl_GREEN_BITS, gl_GREEN_SCALE, gl_HISTOGRAM, gl_INDEX_ARRAY, gl_INDEX_ARRAY_BUFFER_BINDING, gl_INDEX_ARRAY_STRIDE, gl_INDEX_ARRAY_TYPE, gl_INDEX_BITS, gl_INDEX_CLEAR_VALUE, gl_INDEX_LOGIC_OP, gl_INDEX_MODE, gl_INDEX_OFFSET, gl_INDEX_SHIFT, gl_INDEX_WRITEMASK, gl_LIGHT0, gl_LIGHTING, gl_LIGHT_MODEL_AMBIENT, gl_LIGHT_MODEL_COLOR_CONTROL, gl_LIGHT_MODEL_LOCAL_VIEWER, gl_LIGHT_MODEL_TWO_SIDE, gl_LINE_STIPPLE, gl_LINE_STIPPLE_PATTERN, gl_LINE_STIPPLE_REPEAT, gl_LIST_BASE, gl_LIST_INDEX, gl_LIST_MODE, gl_MAP1_COLOR_4, gl_MAP1_GRID_DOMAIN, gl_MAP1_GRID_SEGMENTS, gl_MAP1_INDEX, gl_MAP1_NORMAL, gl_MAP1_TEXTURE_COORD_1, gl_MAP1_TEXTURE_COORD_2, gl_MAP1_TEXTURE_COORD_3, gl_MAP1_TEXTURE_COORD_4, gl_MAP1_VERTEX_3, gl_MAP1_VERTEX_4, gl_MAP2_COLOR_4, gl_MAP2_GRID_DOMAIN, gl_MAP2_GRID_SEGMENTS, gl_MAP2_INDEX, gl_MAP2_NORMAL, gl_MAP2_TEXTURE_COORD_1, gl_MAP2_TEXTURE_COORD_2, gl_MAP2_TEXTURE_COORD_3, gl_MAP2_TEXTURE_COORD_4, gl_MAP2_VERTEX_3, gl_MAP2_VERTEX_4, gl_MAP_COLOR, gl_MAP_STENCIL, gl_MATRIX_MODE, gl_MAX_ATTRIB_STACK_DEPTH, gl_MAX_CLIENT_ATTRIB_STACK_DEPTH, gl_MAX_COLOR_MATRIX_STACK_DEPTH, gl_MAX_CONVOLUTION_HEIGHT, gl_MAX_CONVOLUTION_WIDTH, gl_MAX_EVAL_ORDER, gl_MAX_LIGHTS, gl_MAX_LIST_NESTING, gl_MAX_MODELVIEW_STACK_DEPTH, gl_MAX_NAME_STACK_DEPTH, gl_MAX_PIXEL_MAP_TABLE, gl_MAX_PROJECTION_STACK_DEPTH, gl_MAX_TEXTURE_COORDS, gl_MAX_TEXTURE_STACK_DEPTH, gl_MAX_TEXTURE_UNITS, gl_MINMAX, gl_MODELVIEW, gl_MODELVIEW_MATRIX, gl_MODELVIEW_STACK_DEPTH, gl_NAME_STACK_DEPTH, gl_NORMALIZE, gl_NORMAL_ARRAY, gl_NORMAL_ARRAY_BUFFER_BINDING, gl_NORMAL_ARRAY_STRIDE, gl_NORMAL_ARRAY_TYPE, gl_PERSPECTIVE_CORRECTION_HINT, gl_PIXEL_MAP_A_TO_A_SIZE, gl_PIXEL_MAP_B_TO_B_SIZE, gl_PIXEL_MAP_G_TO_G_SIZE, gl_PIXEL_MAP_I_TO_A_SIZE, gl_PIXEL_MAP_I_TO_B_SIZE, gl_PIXEL_MAP_I_TO_G_SIZE, gl_PIXEL_MAP_I_TO_I_SIZE, gl_PIXEL_MAP_I_TO_R_SIZE, gl_PIXEL_MAP_R_TO_R_SIZE, gl_PIXEL_MAP_S_TO_S_SIZE, gl_POINT_DISTANCE_ATTENUATION, gl_POINT_SIZE_MAX, gl_POINT_SIZE_MIN, gl_POINT_SMOOTH, gl_POINT_SMOOTH_HINT, gl_POLYGON_MODE, gl_POLYGON_STIPPLE, gl_POST_COLOR_MATRIX_ALPHA_BIAS, gl_POST_COLOR_MATRIX_ALPHA_SCALE, gl_POST_COLOR_MATRIX_BLUE_BIAS, gl_POST_COLOR_MATRIX_BLUE_SCALE, gl_POST_COLOR_MATRIX_COLOR_TABLE, gl_POST_COLOR_MATRIX_GREEN_BIAS, gl_POST_COLOR_MATRIX_GREEN_SCALE, gl_POST_COLOR_MATRIX_RED_BIAS, gl_POST_COLOR_MATRIX_RED_SCALE, gl_POST_CONVOLUTION_ALPHA_BIAS, gl_POST_CONVOLUTION_ALPHA_SCALE, gl_POST_CONVOLUTION_BLUE_BIAS, gl_POST_CONVOLUTION_BLUE_SCALE, gl_POST_CONVOLUTION_COLOR_TABLE, gl_POST_CONVOLUTION_GREEN_BIAS, gl_POST_CONVOLUTION_GREEN_SCALE, gl_POST_CONVOLUTION_RED_BIAS, gl_POST_CONVOLUTION_RED_SCALE, gl_PROJECTION_MATRIX, gl_PROJECTION_STACK_DEPTH, gl_RED_BIAS, gl_RED_BITS, gl_RED_SCALE, gl_RENDER_MODE, gl_RESCALE_NORMAL, gl_RGBA_MODE, gl_SECONDARY_COLOR_ARRAY, gl_SECONDARY_COLOR_ARRAY_BUFFER_BINDING, gl_SECONDARY_COLOR_ARRAY_SIZE, gl_SECONDARY_COLOR_ARRAY_STRIDE, gl_SECONDARY_COLOR_ARRAY_TYPE, gl_SELECTION_BUFFER_SIZE, gl_SEPARABLE_2D, gl_SHADE_MODEL, gl_STENCIL_BITS, gl_TEXTURE_COORD_ARRAY, gl_TEXTURE_COORD_ARRAY_BUFFER_BINDING, gl_TEXTURE_COORD_ARRAY_SIZE, gl_TEXTURE_COORD_ARRAY_STRIDE, gl_TEXTURE_COORD_ARRAY_TYPE, gl_TEXTURE_GEN_Q, gl_TEXTURE_GEN_R, gl_TEXTURE_GEN_S, gl_TEXTURE_GEN_T, gl_TEXTURE_MATRIX, gl_TEXTURE_STACK_DEPTH, gl_TRANSPOSE_COLOR_MATRIX, gl_TRANSPOSE_MODELVIEW_MATRIX, gl_TRANSPOSE_PROJECTION_MATRIX, gl_TRANSPOSE_TEXTURE_MATRIX, gl_VERTEX_ARRAY, gl_VERTEX_ARRAY_BUFFER_BINDING, gl_VERTEX_ARRAY_SIZE, gl_VERTEX_ARRAY_STRIDE, gl_VERTEX_ARRAY_TYPE, gl_ZOOM_X, gl_ZOOM_Y ) import Graphics.Rendering.OpenGL.Raw.ARB.FragmentProgram ( gl_CURRENT_MATRIX, gl_CURRENT_MATRIX_STACK_DEPTH ) import Graphics.Rendering.OpenGL.Raw.ARB.MatrixPalette ( gl_CURRENT_MATRIX_INDEX, gl_CURRENT_PALETTE_MATRIX, gl_MATRIX_INDEX_ARRAY, gl_MATRIX_INDEX_ARRAY_SIZE, gl_MATRIX_INDEX_ARRAY_STRIDE, gl_MATRIX_INDEX_ARRAY_TYPE, gl_MATRIX_PALETTE, gl_MAX_MATRIX_PALETTE_STACK_DEPTH, gl_MAX_PALETTE_MATRICES ) import Graphics.Rendering.OpenGL.Raw.ARB.VertexBlend ( gl_ACTIVE_VERTEX_UNITS, gl_CURRENT_WEIGHT, gl_MAX_VERTEX_UNITS, gl_MODELVIEW1, gl_MODELVIEW2, gl_MODELVIEW31, gl_VERTEX_BLEND, gl_WEIGHT_ARRAY, gl_WEIGHT_ARRAY_SIZE, gl_WEIGHT_ARRAY_STRIDE, gl_WEIGHT_ARRAY_TYPE, gl_WEIGHT_SUM_UNITY ) import Graphics.Rendering.OpenGL.Raw.Core32 import Graphics.Rendering.OpenGL.Raw.EXT ( gl_RGBA_SIGNED_COMPONENTS ) import Graphics.Rendering.OpenGL.Raw.EXT.Cmyka ( gl_PACK_CMYK_HINT, gl_UNPACK_CMYK_HINT ) import Graphics.Rendering.OpenGL.Raw.EXT.CompiledVertexArray ( gl_ARRAY_ELEMENT_LOCK_FIRST, gl_ARRAY_ELEMENT_LOCK_COUNT ) import Graphics.Rendering.OpenGL.Raw.EXT.DepthBoundsTest ( gl_DEPTH_BOUNDS, ) import Graphics.Rendering.OpenGL.Raw.EXT.SharedTexturePalette ( gl_SHARED_TEXTURE_PALETTE ) import Graphics.Rendering.OpenGL.Raw.EXT.StencilTwoSide ( gl_ACTIVE_STENCIL_FACE ) import Graphics.Rendering.OpenGL.Raw.EXT.TextureFilterAnisotropic ( gl_MAX_TEXTURE_MAX_ANISOTROPY ) import Graphics.Rendering.OpenGL.Raw.NV.FogDistance ( gl_FOG_DISTANCE_MODE ) import Graphics.Rendering.OpenGL.Raw.NV.LightMaxExponent ( gl_MAX_SHININESS, gl_MAX_SPOT_EXPONENT ) import Graphics.Rendering.OpenGL.Raw.NV.PrimitiveRestart ( gl_PRIMITIVE_RESTART_INDEX_NV, gl_PRIMITIVE_RESTART_NV ) -------------------------------------------------------------------------------- data GetPName = GetCurrentColor | GetCurrentIndex | GetCurrentNormal | GetCurrentTextureCoords | GetCurrentRasterColor | GetCurrentRasterSecondaryColor | GetCurrentRasterIndex | GetCurrentRasterTextureCoords | GetCurrentRasterPosition | GetCurrentRasterPositionValid | GetCurrentRasterDistance | GetCurrentMatrixIndex | GetPointSmooth | GetPointSize | GetPointSizeRange | GetPointSizeGranularity | GetLineSmooth | GetLineWidth | GetLineWidthRange | GetLineWidthGranularity | GetLineStipple | GetLineStipplePattern | GetLineStippleRepeat | GetSmoothPointSizeRange | GetSmoothPointSizeGranularity | GetSmoothLineWidthRange | GetSmoothLineWidthGranularity | GetAliasedPointSizeRange | GetAliasedLineWidthRange | GetListMode | GetMaxListNesting | GetListBase | GetListIndex | GetPolygonMode | GetPolygonSmooth | GetPolygonStipple | GetEdgeFlag | GetCullFace | GetCullFaceMode | GetFrontFace | GetLighting | GetLightModelLocalViewer | GetLightModelTwoSide | GetLightModelAmbient | GetShadeModel | GetColorMaterialFace | GetColorMaterialParameter | GetColorMaterial | GetFog | GetFogIndex | GetFogDensity | GetFogStart | GetFogEnd | GetFogMode | GetFogColor | GetFogCoordSrc | GetCurrentFogCoord | GetDepthRange | GetDepthTest | GetDepthWritemask | GetDepthClearValue | GetDepthFunc | GetAccumClearValue | GetStencilTest | GetStencilClearValue | GetStencilFunc | GetStencilValueMask | GetStencilFail | GetStencilPassDepthFail | GetStencilPassDepthPass | GetStencilRef | GetStencilWritemask | GetMatrixMode | GetNormalize | GetViewport | GetModelviewStackDepth | GetProjectionStackDepth | GetTextureStackDepth | GetModelviewMatrix | GetProjectionMatrix | GetTextureMatrix | GetAttribStackDepth | GetClientAttribStackDepth | GetAlphaTest | GetAlphaTestFunc | GetAlphaTestRef | GetDither | GetBlendDst | GetBlendSrc | GetBlend | GetLogicOpMode | GetIndexLogicOp | GetLogicOp | GetColorLogicOp | GetAuxBuffers | GetDrawBuffer | GetReadBuffer | GetScissorBox | GetScissorTest | GetIndexClearValue | GetIndexWritemask | GetColorClearValue | GetColorWritemask | GetIndexMode | GetRGBAMode | GetDoublebuffer | GetStereo | GetRenderMode | GetPerspectiveCorrectionHint | GetPointSmoothHint | GetLineSmoothHint | GetPolygonSmoothHint | GetFogHint | GetGenerateMipmapHint | GetTextureCompressionHint | GetTextureGenS | GetTextureGenT | GetTextureGenR | GetTextureGenQ | GetPixelMapIToISize | GetPixelMapSToSSize | GetPixelMapIToRSize | GetPixelMapIToGSize | GetPixelMapIToBSize | GetPixelMapIToASize | GetPixelMapRToRSize | GetPixelMapGToGSize | GetPixelMapBToBSize | GetPixelMapAToASize | GetUnpackSwapBytes | GetUnpackLSBFirst | GetUnpackRowLength | GetUnpackSkipRows | GetUnpackSkipPixels | GetUnpackAlignment | GetPackSwapBytes | GetPackLSBFirst | GetPackRowLength | GetPackSkipRows | GetPackSkipPixels | GetPackAlignment | GetMapColor | GetMapStencil | GetIndexShift | GetIndexOffset | GetRedScale | GetRedBias | GetZoomX | GetZoomY | GetGreenScale | GetGreenBias | GetBlueScale | GetBlueBias | GetAlphaScale | GetAlphaBias | GetDepthScale | GetDepthBias | GetMaxEvalOrder | GetMaxLights | GetMaxClipPlanes | GetMaxTextureSize | GetMaxPixelMapTable | GetMaxAttribStackDepth | GetMaxModelviewStackDepth | GetMaxNameStackDepth | GetMaxProjectionStackDepth | GetMaxTextureStackDepth | GetMaxViewportDims | GetMaxClientAttribStackDepth | GetSubpixelBits | GetIndexBits | GetRedBits | GetGreenBits | GetBlueBits | GetAlphaBits | GetDepthBits | GetStencilBits | GetAccumRedBits | GetAccumGreenBits | GetAccumBlueBits | GetAccumAlphaBits | GetNameStackDepth | GetAutoNormal | GetMap1Color4 | GetMap1Index | GetMap1Normal | GetMap1TextureCoord1 | GetMap1TextureCoord2 | GetMap1TextureCoord3 | GetMap1TextureCoord4 | GetMap1Vertex3 | GetMap1Vertex4 | GetMap2Color4 | GetMap2Index | GetMap2Normal | GetMap2TextureCoord1 | GetMap2TextureCoord2 | GetMap2TextureCoord3 | GetMap2TextureCoord4 | GetMap2Vertex3 | GetMap2Vertex4 | GetMap1GridDomain | GetMap1GridSegments | GetMap2GridDomain | GetMap2GridSegments | GetTexture1D | GetTexture2D | GetFeedbackBufferSize | GetFeedbackBufferType | GetSelectionBufferSize | GetPolygonOffsetUnits | GetPolygonOffsetPoint | GetPolygonOffsetLine | GetPolygonOffsetFill | GetPolygonOffsetFactor | GetTextureBinding1D | GetTextureBinding2D | GetTextureBinding3D | GetVertexArray | GetNormalArray | GetColorArray | GetIndexArray | GetTextureCoordArray | GetEdgeFlagArray | GetFogCoordArray | GetSecondaryColorArray | GetMatrixIndexArray | GetVertexArraySize | GetVertexArrayType | GetVertexArrayStride | GetNormalArrayType | GetNormalArrayStride | GetColorArraySize | GetColorArrayType | GetColorArrayStride | GetIndexArrayType | GetIndexArrayStride | GetTextureCoordArraySize | GetTextureCoordArrayType | GetTextureCoordArrayStride | GetEdgeFlagArrayStride | GetFogCoordArrayType | GetFogCoordArrayStride | GetSecondaryColorArraySize | GetSecondaryColorArrayType | GetSecondaryColorArrayStride | GetMatrixIndexArraySize | GetMatrixIndexArrayType | GetMatrixIndexArrayStride | GetClipPlane GLsizei | GetLight GLsizei | GetTransposeModelviewMatrix | GetTransposeProjectionMatrix | GetTransposeTextureMatrix | GetTransposeColorMatrix | GetLightModelColorControl | GetBlendColor | GetBlendEquation | GetBlendEquationAlpha | GetColorTable | GetPostConvolutionColorTable | GetPostColorMatrixColorTable | GetConvolution1D | GetConvolution2D | GetSeparable2D | GetMaxConvolutionWidth | GetMaxConvolutionHeight | GetPostConvolutionRedScale | GetPostConvolutionGreenScale | GetPostConvolutionBlueScale | GetPostConvolutionAlphaScale | GetPostConvolutionRedBias | GetPostConvolutionGreenBias | GetPostConvolutionBlueBias | GetPostConvolutionAlphaBias | GetHistogram | GetMinmax | GetColorSum | GetCurrentSecondaryColor | GetRescaleNormal | GetSharedTexturePalette | GetTexture3DBinding | GetPackSkipImages | GetPackImageHeight | GetUnpackSkipImages | GetUnpackImageHeight | GetTexture3D | GetMax3DTextureSize | GetMaxTextureLODBias | GetMaxTextureMaxAnisotropy | GetMultisample | GetSampleAlphaToCoverage | GetSampleAlphaToOne | GetSampleCoverage | GetSampleBuffers | GetSamples | GetSampleCoverageValue | GetSampleCoverageInvert | GetPointSizeMin | GetPointSizeMax | GetPointFadeThresholdSize | GetPointDistanceAttenuation | GetColorMatrix | GetColorMatrixStackDepth | GetMaxColorMatrixStackDepth | GetPostColorMatrixRedScale | GetPostColorMatrixGreenScale | GetPostColorMatrixBlueScale | GetPostColorMatrixAlphaScale | GetPostColorMatrixRedBias | GetPostColorMatrixGreenBias | GetPostColorMatrixBlueBias | GetPostColorMatrixAlphaBias | GetMaxElementsVertices | GetMaxElementsIndices | GetActiveTexture | GetClientActiveTexture | GetMaxTextureUnits | GetTextureCubeMap | GetMaxCubeMapTextureSize | GetMaxRectangleTextureSize | GetNumCompressedTextureFormats | GetCompressedTextureFormats | GetMaxVertexUnits | GetActiveVertexUnits | GetWeightSumUnity | GetVertexBlend | GetModelview GLsizei | GetCurrentWeight | GetWeightArrayType | GetWeightArrayStride | GetWeightArraySize | GetWeightArray | GetMatrixPalette | GetMaxMatrixPaletteStackDepth | GetMaxPaletteMatrices | GetCurrentPaletteMatrix | GetBlendDstRGB | GetBlendSrcRGB | GetBlendDstAlpha | GetBlendSrcAlpha | GetPackCMYKHint | GetUnpackCMYKHint | GetArrayElementLockFirst | GetArrayElementLockCount | GetMaxShininess | GetMaxSpotExponent | GetFogDistanceMode | GetDepthBounds | GetPrimitiveRestartIndex | GetPrimitiveRestartNV | GetPrimitiveRestartIndexNV | GetActiveStencilFace | GetArrayBufferBinding | GetElementArrayBufferBinding | GetVertexArrayBufferBinding | GetNormalArrayBufferBinding | GetColorArrayBufferBinding | GetIndexArrayBufferBinding | GetTextureCoordArrayBufferBinding | GetEdgeFlagArrayBufferBinding | GetSecondaryColorArrayBufferBinding | GetFogCoordArrayBufferBinding | GetTextureBindingCubeMap | GetTextureBindingRectangle | GetCurrentMatrix | GetCurrentMatrixStackDepth | GetMaxCombinedTextureImageUnits | GetMaxDrawBuffers | GetMaxFragmentUniformComponents | GetMaxTextureCoords | GetMaxTextureImageUnits | GetMaxVaryingFloats | GetMaxVertexAttribs | GetMaxVertexTextureImageUnits | GetMaxVertexUniformComponents | GetCurrentProgram | GetPixelPackBufferBinding | GetPixelUnpackBufferBinding | GetDrawBufferN GLsizei | GetRGBASignedComponents | GetCopyReadBuffer | GetCopyWriteBuffer -- GetWeightArrayBufferBinding | GetContextProfileMask marshalGetPName :: GetPName -> Maybe GLenum marshalGetPName x = case x of GetCurrentColor -> Just gl_CURRENT_COLOR GetCurrentIndex -> Just gl_CURRENT_INDEX GetCurrentNormal -> Just gl_CURRENT_NORMAL GetCurrentTextureCoords -> Just gl_CURRENT_TEXTURE_COORDS GetCurrentRasterColor -> Just gl_CURRENT_RASTER_COLOR GetCurrentRasterSecondaryColor -> Just gl_CURRENT_RASTER_SECONDARY_COLOR GetCurrentRasterIndex -> Just gl_CURRENT_RASTER_INDEX GetCurrentRasterTextureCoords -> Just gl_CURRENT_RASTER_TEXTURE_COORDS GetCurrentRasterPosition -> Just gl_CURRENT_RASTER_POSITION GetCurrentRasterPositionValid -> Just gl_CURRENT_RASTER_POSITION_VALID GetCurrentRasterDistance -> Just gl_CURRENT_RASTER_DISTANCE GetCurrentMatrixIndex -> Just gl_CURRENT_MATRIX_INDEX GetPointSmooth -> Just gl_POINT_SMOOTH GetPointSize -> Just gl_POINT_SIZE GetPointSizeRange -> Just gl_POINT_SIZE_RANGE GetPointSizeGranularity -> Just gl_POINT_SIZE_GRANULARITY GetLineSmooth -> Just gl_LINE_SMOOTH GetLineWidth -> Just gl_LINE_WIDTH GetLineWidthRange -> Just gl_SMOOTH_LINE_WIDTH_RANGE GetLineWidthGranularity -> Just gl_SMOOTH_LINE_WIDTH_GRANULARITY GetLineStipple -> Just gl_LINE_STIPPLE GetLineStipplePattern -> Just gl_LINE_STIPPLE_PATTERN GetLineStippleRepeat -> Just gl_LINE_STIPPLE_REPEAT GetSmoothPointSizeRange -> Just gl_POINT_SIZE_RANGE GetSmoothPointSizeGranularity -> Just gl_POINT_SIZE_GRANULARITY GetSmoothLineWidthRange -> Just gl_SMOOTH_LINE_WIDTH_RANGE GetSmoothLineWidthGranularity -> Just gl_SMOOTH_LINE_WIDTH_GRANULARITY GetAliasedPointSizeRange -> Just gl_ALIASED_POINT_SIZE_RANGE GetAliasedLineWidthRange -> Just gl_ALIASED_LINE_WIDTH_RANGE GetListMode -> Just gl_LIST_MODE GetMaxListNesting -> Just gl_MAX_LIST_NESTING GetListBase -> Just gl_LIST_BASE GetListIndex -> Just gl_LIST_INDEX GetPolygonMode -> Just gl_POLYGON_MODE GetPolygonSmooth -> Just gl_POLYGON_SMOOTH GetPolygonStipple -> Just gl_POLYGON_STIPPLE GetEdgeFlag -> Just gl_EDGE_FLAG GetCullFace -> Just gl_CULL_FACE GetCullFaceMode -> Just gl_CULL_FACE_MODE GetFrontFace -> Just gl_FRONT_FACE GetLighting -> Just gl_LIGHTING GetLightModelLocalViewer -> Just gl_LIGHT_MODEL_LOCAL_VIEWER GetLightModelTwoSide -> Just gl_LIGHT_MODEL_TWO_SIDE GetLightModelAmbient -> Just gl_LIGHT_MODEL_AMBIENT GetShadeModel -> Just gl_SHADE_MODEL GetColorMaterialFace -> Just gl_COLOR_MATERIAL_FACE GetColorMaterialParameter -> Just gl_COLOR_MATERIAL_PARAMETER GetColorMaterial -> Just gl_COLOR_MATERIAL GetFog -> Just gl_FOG GetFogIndex -> Just gl_FOG_INDEX GetFogDensity -> Just gl_FOG_DENSITY GetFogStart -> Just gl_FOG_START GetFogEnd -> Just gl_FOG_END GetFogMode -> Just gl_FOG_MODE GetFogColor -> Just gl_FOG_COLOR GetFogCoordSrc -> Just gl_FOG_COORD_SRC GetCurrentFogCoord -> Just gl_CURRENT_FOG_COORD GetDepthRange -> Just gl_DEPTH_RANGE GetDepthTest -> Just gl_DEPTH_TEST GetDepthWritemask -> Just gl_DEPTH_WRITEMASK GetDepthClearValue -> Just gl_DEPTH_CLEAR_VALUE GetDepthFunc -> Just gl_DEPTH_FUNC GetAccumClearValue -> Just gl_ACCUM_CLEAR_VALUE GetStencilTest -> Just gl_STENCIL_TEST GetStencilClearValue -> Just gl_STENCIL_CLEAR_VALUE GetStencilFunc -> Just gl_STENCIL_FUNC GetStencilValueMask -> Just gl_STENCIL_VALUE_MASK GetStencilFail -> Just gl_STENCIL_FAIL GetStencilPassDepthFail -> Just gl_STENCIL_PASS_DEPTH_FAIL GetStencilPassDepthPass -> Just gl_STENCIL_PASS_DEPTH_PASS GetStencilRef -> Just gl_STENCIL_REF GetStencilWritemask -> Just gl_STENCIL_WRITEMASK GetMatrixMode -> Just gl_MATRIX_MODE GetNormalize -> Just gl_NORMALIZE GetViewport -> Just gl_VIEWPORT GetModelviewStackDepth -> Just gl_MODELVIEW_STACK_DEPTH GetProjectionStackDepth -> Just gl_PROJECTION_STACK_DEPTH GetTextureStackDepth -> Just gl_TEXTURE_STACK_DEPTH GetModelviewMatrix -> Just gl_MODELVIEW_MATRIX GetProjectionMatrix -> Just gl_PROJECTION_MATRIX GetTextureMatrix -> Just gl_TEXTURE_MATRIX GetAttribStackDepth -> Just gl_ATTRIB_STACK_DEPTH GetClientAttribStackDepth -> Just gl_CLIENT_ATTRIB_STACK_DEPTH GetAlphaTest -> Just gl_ALPHA_TEST GetAlphaTestFunc -> Just gl_ALPHA_TEST_FUNC GetAlphaTestRef -> Just gl_ALPHA_TEST_REF GetDither -> Just gl_DITHER GetBlendDst -> Just gl_BLEND_DST GetBlendSrc -> Just gl_BLEND_SRC GetBlend -> Just gl_BLEND GetLogicOpMode -> Just gl_LOGIC_OP_MODE GetIndexLogicOp -> Just gl_INDEX_LOGIC_OP GetLogicOp -> Just gl_INDEX_LOGIC_OP GetColorLogicOp -> Just gl_COLOR_LOGIC_OP GetAuxBuffers -> Just gl_AUX_BUFFERS GetDrawBuffer -> Just gl_DRAW_BUFFER GetReadBuffer -> Just gl_READ_BUFFER GetScissorBox -> Just gl_SCISSOR_BOX GetScissorTest -> Just gl_SCISSOR_TEST GetIndexClearValue -> Just gl_INDEX_CLEAR_VALUE GetIndexWritemask -> Just gl_INDEX_WRITEMASK GetColorClearValue -> Just gl_COLOR_CLEAR_VALUE GetColorWritemask -> Just gl_COLOR_WRITEMASK GetIndexMode -> Just gl_INDEX_MODE GetRGBAMode -> Just gl_RGBA_MODE GetDoublebuffer -> Just gl_DOUBLEBUFFER GetStereo -> Just gl_STEREO GetRenderMode -> Just gl_RENDER_MODE GetPerspectiveCorrectionHint -> Just gl_PERSPECTIVE_CORRECTION_HINT GetPointSmoothHint -> Just gl_POINT_SMOOTH_HINT GetLineSmoothHint -> Just gl_LINE_SMOOTH_HINT GetPolygonSmoothHint -> Just gl_POLYGON_SMOOTH_HINT GetFogHint -> Just gl_FOG_HINT GetGenerateMipmapHint -> Just gl_GENERATE_MIPMAP_HINT GetTextureCompressionHint -> Just gl_TEXTURE_COMPRESSION_HINT GetTextureGenS -> Just gl_TEXTURE_GEN_S GetTextureGenT -> Just gl_TEXTURE_GEN_T GetTextureGenR -> Just gl_TEXTURE_GEN_R GetTextureGenQ -> Just gl_TEXTURE_GEN_Q GetPixelMapIToISize -> Just gl_PIXEL_MAP_I_TO_I_SIZE GetPixelMapSToSSize -> Just gl_PIXEL_MAP_S_TO_S_SIZE GetPixelMapIToRSize -> Just gl_PIXEL_MAP_I_TO_R_SIZE GetPixelMapIToGSize -> Just gl_PIXEL_MAP_I_TO_G_SIZE GetPixelMapIToBSize -> Just gl_PIXEL_MAP_I_TO_B_SIZE GetPixelMapIToASize -> Just gl_PIXEL_MAP_I_TO_A_SIZE GetPixelMapRToRSize -> Just gl_PIXEL_MAP_R_TO_R_SIZE GetPixelMapGToGSize -> Just gl_PIXEL_MAP_G_TO_G_SIZE GetPixelMapBToBSize -> Just gl_PIXEL_MAP_B_TO_B_SIZE GetPixelMapAToASize -> Just gl_PIXEL_MAP_A_TO_A_SIZE GetUnpackSwapBytes -> Just gl_UNPACK_SWAP_BYTES GetUnpackLSBFirst -> Just gl_UNPACK_LSB_FIRST GetUnpackRowLength -> Just gl_UNPACK_ROW_LENGTH GetUnpackSkipRows -> Just gl_UNPACK_SKIP_ROWS GetUnpackSkipPixels -> Just gl_UNPACK_SKIP_PIXELS GetUnpackAlignment -> Just gl_UNPACK_ALIGNMENT GetPackSwapBytes -> Just gl_PACK_SWAP_BYTES GetPackLSBFirst -> Just gl_PACK_LSB_FIRST GetPackRowLength -> Just gl_PACK_ROW_LENGTH GetPackSkipRows -> Just gl_PACK_SKIP_ROWS GetPackSkipPixels -> Just gl_PACK_SKIP_PIXELS GetPackAlignment -> Just gl_PACK_ALIGNMENT GetMapColor -> Just gl_MAP_COLOR GetMapStencil -> Just gl_MAP_STENCIL GetIndexShift -> Just gl_INDEX_SHIFT GetIndexOffset -> Just gl_INDEX_OFFSET GetRedScale -> Just gl_RED_SCALE GetRedBias -> Just gl_RED_BIAS GetZoomX -> Just gl_ZOOM_X GetZoomY -> Just gl_ZOOM_Y GetGreenScale -> Just gl_GREEN_SCALE GetGreenBias -> Just gl_GREEN_BIAS GetBlueScale -> Just gl_BLUE_SCALE GetBlueBias -> Just gl_BLUE_BIAS GetAlphaScale -> Just gl_ALPHA_SCALE GetAlphaBias -> Just gl_ALPHA_BIAS GetDepthScale -> Just gl_DEPTH_SCALE GetDepthBias -> Just gl_DEPTH_BIAS GetMaxEvalOrder -> Just gl_MAX_EVAL_ORDER GetMaxLights -> Just gl_MAX_LIGHTS GetMaxClipPlanes -> Just gl_MAX_CLIP_DISTANCES GetMaxTextureSize -> Just gl_MAX_TEXTURE_SIZE GetMaxPixelMapTable -> Just gl_MAX_PIXEL_MAP_TABLE GetMaxAttribStackDepth -> Just gl_MAX_ATTRIB_STACK_DEPTH GetMaxModelviewStackDepth -> Just gl_MAX_MODELVIEW_STACK_DEPTH GetMaxNameStackDepth -> Just gl_MAX_NAME_STACK_DEPTH GetMaxProjectionStackDepth -> Just gl_MAX_PROJECTION_STACK_DEPTH GetMaxTextureStackDepth -> Just gl_MAX_TEXTURE_STACK_DEPTH GetMaxViewportDims -> Just gl_MAX_VIEWPORT_DIMS GetMaxClientAttribStackDepth -> Just gl_MAX_CLIENT_ATTRIB_STACK_DEPTH GetSubpixelBits -> Just gl_SUBPIXEL_BITS GetIndexBits -> Just gl_INDEX_BITS GetRedBits -> Just gl_RED_BITS GetGreenBits -> Just gl_GREEN_BITS GetBlueBits -> Just gl_BLUE_BITS GetAlphaBits -> Just gl_ALPHA_BITS GetDepthBits -> Just gl_DEPTH_BITS GetStencilBits -> Just gl_STENCIL_BITS GetAccumRedBits -> Just gl_ACCUM_RED_BITS GetAccumGreenBits -> Just gl_ACCUM_GREEN_BITS GetAccumBlueBits -> Just gl_ACCUM_BLUE_BITS GetAccumAlphaBits -> Just gl_ACCUM_ALPHA_BITS GetNameStackDepth -> Just gl_NAME_STACK_DEPTH GetAutoNormal -> Just gl_AUTO_NORMAL GetMap1Color4 -> Just gl_MAP1_COLOR_4 GetMap1Index -> Just gl_MAP1_INDEX GetMap1Normal -> Just gl_MAP1_NORMAL GetMap1TextureCoord1 -> Just gl_MAP1_TEXTURE_COORD_1 GetMap1TextureCoord2 -> Just gl_MAP1_TEXTURE_COORD_2 GetMap1TextureCoord3 -> Just gl_MAP1_TEXTURE_COORD_3 GetMap1TextureCoord4 -> Just gl_MAP1_TEXTURE_COORD_4 GetMap1Vertex3 -> Just gl_MAP1_VERTEX_3 GetMap1Vertex4 -> Just gl_MAP1_VERTEX_4 GetMap2Color4 -> Just gl_MAP2_COLOR_4 GetMap2Index -> Just gl_MAP2_INDEX GetMap2Normal -> Just gl_MAP2_NORMAL GetMap2TextureCoord1 -> Just gl_MAP2_TEXTURE_COORD_1 GetMap2TextureCoord2 -> Just gl_MAP2_TEXTURE_COORD_2 GetMap2TextureCoord3 -> Just gl_MAP2_TEXTURE_COORD_3 GetMap2TextureCoord4 -> Just gl_MAP2_TEXTURE_COORD_4 GetMap2Vertex3 -> Just gl_MAP2_VERTEX_3 GetMap2Vertex4 -> Just gl_MAP2_VERTEX_4 GetMap1GridDomain -> Just gl_MAP1_GRID_DOMAIN GetMap1GridSegments -> Just gl_MAP1_GRID_SEGMENTS GetMap2GridDomain -> Just gl_MAP2_GRID_DOMAIN GetMap2GridSegments -> Just gl_MAP2_GRID_SEGMENTS GetTexture1D -> Just gl_TEXTURE_1D GetTexture2D -> Just gl_TEXTURE_2D GetFeedbackBufferSize -> Just gl_FEEDBACK_BUFFER_SIZE GetFeedbackBufferType -> Just gl_FEEDBACK_BUFFER_TYPE GetSelectionBufferSize -> Just gl_SELECTION_BUFFER_SIZE GetPolygonOffsetUnits -> Just gl_POLYGON_OFFSET_UNITS GetPolygonOffsetPoint -> Just gl_POLYGON_OFFSET_POINT GetPolygonOffsetLine -> Just gl_POLYGON_OFFSET_LINE GetPolygonOffsetFill -> Just gl_POLYGON_OFFSET_FILL GetPolygonOffsetFactor -> Just gl_POLYGON_OFFSET_FACTOR GetTextureBinding1D -> Just gl_TEXTURE_BINDING_1D GetTextureBinding2D -> Just gl_TEXTURE_BINDING_2D GetTextureBinding3D -> Just gl_TEXTURE_BINDING_3D GetVertexArray -> Just gl_VERTEX_ARRAY GetNormalArray -> Just gl_NORMAL_ARRAY GetColorArray -> Just gl_COLOR_ARRAY GetIndexArray -> Just gl_INDEX_ARRAY GetTextureCoordArray -> Just gl_TEXTURE_COORD_ARRAY GetEdgeFlagArray -> Just gl_EDGE_FLAG_ARRAY GetFogCoordArray -> Just gl_FOG_COORD_ARRAY GetSecondaryColorArray -> Just gl_SECONDARY_COLOR_ARRAY GetMatrixIndexArray -> Just gl_MATRIX_INDEX_ARRAY GetVertexArraySize -> Just gl_VERTEX_ARRAY_SIZE GetVertexArrayType -> Just gl_VERTEX_ARRAY_TYPE GetVertexArrayStride -> Just gl_VERTEX_ARRAY_STRIDE GetNormalArrayType -> Just gl_NORMAL_ARRAY_TYPE GetNormalArrayStride -> Just gl_NORMAL_ARRAY_STRIDE GetColorArraySize -> Just gl_COLOR_ARRAY_SIZE GetColorArrayType -> Just gl_COLOR_ARRAY_TYPE GetColorArrayStride -> Just gl_COLOR_ARRAY_STRIDE GetIndexArrayType -> Just gl_INDEX_ARRAY_TYPE GetIndexArrayStride -> Just gl_INDEX_ARRAY_STRIDE GetTextureCoordArraySize -> Just gl_TEXTURE_COORD_ARRAY_SIZE GetTextureCoordArrayType -> Just gl_TEXTURE_COORD_ARRAY_TYPE GetTextureCoordArrayStride -> Just gl_TEXTURE_COORD_ARRAY_STRIDE GetEdgeFlagArrayStride -> Just gl_EDGE_FLAG_ARRAY_STRIDE GetFogCoordArrayType -> Just gl_FOG_COORD_ARRAY_TYPE GetFogCoordArrayStride -> Just gl_FOG_COORD_ARRAY_STRIDE GetSecondaryColorArraySize -> Just gl_SECONDARY_COLOR_ARRAY_SIZE GetSecondaryColorArrayType -> Just gl_SECONDARY_COLOR_ARRAY_TYPE GetSecondaryColorArrayStride -> Just gl_SECONDARY_COLOR_ARRAY_STRIDE GetMatrixIndexArraySize -> Just gl_MATRIX_INDEX_ARRAY_SIZE GetMatrixIndexArrayType -> Just gl_MATRIX_INDEX_ARRAY_TYPE GetMatrixIndexArrayStride -> Just gl_MATRIX_INDEX_ARRAY_STRIDE GetClipPlane i -> clipPlaneIndexToEnum i GetLight i -> lightIndexToEnum i GetTransposeModelviewMatrix -> Just gl_TRANSPOSE_MODELVIEW_MATRIX GetTransposeProjectionMatrix -> Just gl_TRANSPOSE_PROJECTION_MATRIX GetTransposeTextureMatrix -> Just gl_TRANSPOSE_TEXTURE_MATRIX GetTransposeColorMatrix -> Just gl_TRANSPOSE_COLOR_MATRIX GetLightModelColorControl -> Just gl_LIGHT_MODEL_COLOR_CONTROL GetBlendColor -> Just gl_BLEND_COLOR GetBlendEquation -> Just gl_BLEND_EQUATION_RGB GetBlendEquationAlpha -> Just gl_BLEND_EQUATION_ALPHA GetColorTable -> Just gl_COLOR_TABLE GetPostConvolutionColorTable -> Just gl_POST_CONVOLUTION_COLOR_TABLE GetPostColorMatrixColorTable -> Just gl_POST_COLOR_MATRIX_COLOR_TABLE GetConvolution1D -> Just gl_CONVOLUTION_1D GetConvolution2D -> Just gl_CONVOLUTION_2D GetSeparable2D -> Just gl_SEPARABLE_2D GetMaxConvolutionWidth -> Just gl_MAX_CONVOLUTION_WIDTH GetMaxConvolutionHeight -> Just gl_MAX_CONVOLUTION_HEIGHT GetPostConvolutionRedScale -> Just gl_POST_CONVOLUTION_RED_SCALE GetPostConvolutionGreenScale -> Just gl_POST_CONVOLUTION_GREEN_SCALE GetPostConvolutionBlueScale -> Just gl_POST_CONVOLUTION_BLUE_SCALE GetPostConvolutionAlphaScale -> Just gl_POST_CONVOLUTION_ALPHA_SCALE GetPostConvolutionRedBias -> Just gl_POST_CONVOLUTION_RED_BIAS GetPostConvolutionGreenBias -> Just gl_POST_CONVOLUTION_GREEN_BIAS GetPostConvolutionBlueBias -> Just gl_POST_CONVOLUTION_BLUE_BIAS GetPostConvolutionAlphaBias -> Just gl_POST_CONVOLUTION_ALPHA_BIAS GetHistogram -> Just gl_HISTOGRAM GetMinmax -> Just gl_MINMAX GetColorSum -> Just gl_COLOR_SUM GetCurrentSecondaryColor -> Just gl_CURRENT_SECONDARY_COLOR GetRescaleNormal -> Just gl_RESCALE_NORMAL GetSharedTexturePalette -> Just gl_SHARED_TEXTURE_PALETTE GetTexture3DBinding -> Just gl_TEXTURE_BINDING_3D GetPackSkipImages -> Just gl_PACK_SKIP_IMAGES GetPackImageHeight -> Just gl_PACK_IMAGE_HEIGHT GetUnpackSkipImages -> Just gl_UNPACK_SKIP_IMAGES GetUnpackImageHeight -> Just gl_UNPACK_IMAGE_HEIGHT GetTexture3D -> Just gl_TEXTURE_3D GetMax3DTextureSize -> Just gl_MAX_3D_TEXTURE_SIZE GetMaxTextureLODBias -> Just gl_MAX_TEXTURE_LOD_BIAS GetMaxTextureMaxAnisotropy -> Just gl_MAX_TEXTURE_MAX_ANISOTROPY GetMultisample -> Just gl_MULTISAMPLE GetSampleAlphaToCoverage -> Just gl_SAMPLE_ALPHA_TO_COVERAGE GetSampleAlphaToOne -> Just gl_SAMPLE_ALPHA_TO_ONE GetSampleCoverage -> Just gl_SAMPLE_COVERAGE GetSampleBuffers -> Just gl_SAMPLE_BUFFERS GetSamples -> Just gl_SAMPLES GetSampleCoverageValue -> Just gl_SAMPLE_COVERAGE_VALUE GetSampleCoverageInvert -> Just gl_SAMPLE_COVERAGE_INVERT GetPointSizeMin -> Just gl_POINT_SIZE_MIN GetPointSizeMax -> Just gl_POINT_SIZE_MAX GetPointFadeThresholdSize -> Just gl_POINT_FADE_THRESHOLD_SIZE GetPointDistanceAttenuation -> Just gl_POINT_DISTANCE_ATTENUATION GetColorMatrix -> Just gl_COLOR_MATRIX GetColorMatrixStackDepth -> Just gl_COLOR_MATRIX_STACK_DEPTH GetMaxColorMatrixStackDepth -> Just gl_MAX_COLOR_MATRIX_STACK_DEPTH GetPostColorMatrixRedScale -> Just gl_POST_COLOR_MATRIX_RED_SCALE GetPostColorMatrixGreenScale -> Just gl_POST_COLOR_MATRIX_GREEN_SCALE GetPostColorMatrixBlueScale -> Just gl_POST_COLOR_MATRIX_BLUE_SCALE GetPostColorMatrixAlphaScale -> Just gl_POST_COLOR_MATRIX_ALPHA_SCALE GetPostColorMatrixRedBias -> Just gl_POST_COLOR_MATRIX_RED_BIAS GetPostColorMatrixGreenBias -> Just gl_POST_COLOR_MATRIX_GREEN_BIAS GetPostColorMatrixBlueBias -> Just gl_POST_COLOR_MATRIX_BLUE_BIAS GetPostColorMatrixAlphaBias -> Just gl_POST_COLOR_MATRIX_ALPHA_BIAS GetMaxElementsVertices -> Just gl_MAX_ELEMENTS_VERTICES GetMaxElementsIndices -> Just gl_MAX_ELEMENTS_INDICES GetActiveTexture -> Just gl_ACTIVE_TEXTURE GetClientActiveTexture -> Just gl_CLIENT_ACTIVE_TEXTURE GetMaxTextureUnits -> Just gl_MAX_TEXTURE_UNITS GetTextureCubeMap -> Just gl_TEXTURE_CUBE_MAP GetMaxCubeMapTextureSize -> Just gl_MAX_CUBE_MAP_TEXTURE_SIZE GetMaxRectangleTextureSize -> Just gl_MAX_RECTANGLE_TEXTURE_SIZE GetNumCompressedTextureFormats -> Just gl_NUM_COMPRESSED_TEXTURE_FORMATS GetCompressedTextureFormats -> Just gl_COMPRESSED_TEXTURE_FORMATS GetMaxVertexUnits -> Just gl_MAX_VERTEX_UNITS GetActiveVertexUnits -> Just gl_ACTIVE_VERTEX_UNITS GetWeightSumUnity -> Just gl_WEIGHT_SUM_UNITY GetVertexBlend -> Just gl_VERTEX_BLEND GetModelview i -> modelviewIndexToEnum i GetCurrentWeight -> Just gl_CURRENT_WEIGHT GetWeightArrayType -> Just gl_WEIGHT_ARRAY_TYPE GetWeightArrayStride -> Just gl_WEIGHT_ARRAY_STRIDE GetWeightArraySize -> Just gl_WEIGHT_ARRAY_SIZE GetWeightArray -> Just gl_WEIGHT_ARRAY GetMatrixPalette -> Just gl_MATRIX_PALETTE GetMaxMatrixPaletteStackDepth -> Just gl_MAX_MATRIX_PALETTE_STACK_DEPTH GetMaxPaletteMatrices -> Just gl_MAX_PALETTE_MATRICES GetCurrentPaletteMatrix -> Just gl_CURRENT_PALETTE_MATRIX GetBlendDstRGB -> Just gl_BLEND_DST_RGB GetBlendSrcRGB -> Just gl_BLEND_SRC_RGB GetBlendDstAlpha -> Just gl_BLEND_DST_ALPHA GetBlendSrcAlpha -> Just gl_BLEND_SRC_ALPHA GetPackCMYKHint -> Just gl_PACK_CMYK_HINT GetUnpackCMYKHint -> Just gl_UNPACK_CMYK_HINT GetArrayElementLockFirst -> Just gl_ARRAY_ELEMENT_LOCK_FIRST GetArrayElementLockCount -> Just gl_ARRAY_ELEMENT_LOCK_COUNT GetMaxShininess -> Just gl_MAX_SHININESS GetMaxSpotExponent -> Just gl_MAX_SPOT_EXPONENT GetFogDistanceMode -> Just gl_FOG_DISTANCE_MODE GetDepthBounds -> Just gl_DEPTH_BOUNDS GetPrimitiveRestartIndex -> Just gl_PRIMITIVE_RESTART_INDEX GetPrimitiveRestartNV -> Just gl_PRIMITIVE_RESTART_NV GetPrimitiveRestartIndexNV -> Just gl_PRIMITIVE_RESTART_INDEX_NV GetActiveStencilFace -> Just gl_ACTIVE_STENCIL_FACE GetArrayBufferBinding -> Just gl_ARRAY_BUFFER_BINDING GetElementArrayBufferBinding -> Just gl_ELEMENT_ARRAY_BUFFER_BINDING GetVertexArrayBufferBinding -> Just gl_VERTEX_ARRAY_BUFFER_BINDING GetNormalArrayBufferBinding -> Just gl_NORMAL_ARRAY_BUFFER_BINDING GetColorArrayBufferBinding -> Just gl_COLOR_ARRAY_BUFFER_BINDING GetIndexArrayBufferBinding -> Just gl_INDEX_ARRAY_BUFFER_BINDING GetTextureCoordArrayBufferBinding -> Just gl_TEXTURE_COORD_ARRAY_BUFFER_BINDING GetEdgeFlagArrayBufferBinding -> Just gl_EDGE_FLAG_ARRAY_BUFFER_BINDING GetSecondaryColorArrayBufferBinding -> Just gl_SECONDARY_COLOR_ARRAY_BUFFER_BINDING GetFogCoordArrayBufferBinding -> Just gl_FOG_COORD_ARRAY_BUFFER_BINDING GetTextureBindingCubeMap -> Just gl_TEXTURE_BINDING_CUBE_MAP GetTextureBindingRectangle -> Just gl_TEXTURE_BINDING_RECTANGLE GetCurrentMatrix -> Just gl_CURRENT_MATRIX GetCurrentMatrixStackDepth -> Just gl_CURRENT_MATRIX_STACK_DEPTH GetMaxCombinedTextureImageUnits -> Just gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS GetMaxDrawBuffers -> Just gl_MAX_DRAW_BUFFERS GetMaxFragmentUniformComponents -> Just gl_MAX_FRAGMENT_UNIFORM_COMPONENTS GetMaxTextureCoords -> Just gl_MAX_TEXTURE_COORDS GetMaxTextureImageUnits -> Just gl_MAX_TEXTURE_IMAGE_UNITS GetMaxVaryingFloats -> Just gl_MAX_VARYING_COMPONENTS GetMaxVertexAttribs -> Just gl_MAX_VERTEX_ATTRIBS GetMaxVertexTextureImageUnits -> Just gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS GetMaxVertexUniformComponents -> Just gl_MAX_VERTEX_UNIFORM_COMPONENTS GetCurrentProgram -> Just gl_CURRENT_PROGRAM GetPixelPackBufferBinding -> Just gl_PIXEL_PACK_BUFFER_BINDING GetPixelUnpackBufferBinding -> Just gl_PIXEL_UNPACK_BUFFER_BINDING GetDrawBufferN i -> drawBufferIndexToEnum i GetRGBASignedComponents -> Just gl_RGBA_SIGNED_COMPONENTS GetCopyReadBuffer -> Just gl_COPY_READ_BUFFER GetCopyWriteBuffer -> Just gl_COPY_WRITE_BUFFER -- GetWeightArrayBufferBinding -> Just gl_WEIGHT_ARRAY_BUFFER_BINDING GetContextProfileMask -> Just gl_CONTEXT_PROFILE_MASK -------------------------------------------------------------------------------- -- 0x3000 through 0x3FFF are reserved for clip planes clipPlaneIndexToEnum :: GLsizei -> Maybe GLenum clipPlaneIndexToEnum i | 0 <= i && i <= maxClipPlaneIndex = Just (gl_CLIP_DISTANCE0 + fromIntegral i) | otherwise = Nothing maxClipPlaneIndex :: GLsizei maxClipPlaneIndex = 0xFFF -------------------------------------------------------------------------------- -- 0x4000 through 0x4FFF are reserved for light numbers lightIndexToEnum :: GLsizei -> Maybe GLenum lightIndexToEnum i | 0 <= i && i <= maxLightIndex = Just (gl_LIGHT0 + fromIntegral i) | otherwise = Nothing maxLightIndex :: GLsizei maxLightIndex = 0xFFF -------------------------------------------------------------------------------- -- 0x1700, 0x850a, and 0x8722 through 0x873f are reserved for modelview matrices modelviewIndexToEnum :: GLsizei -> Maybe GLenum modelviewIndexToEnum 0 = Just gl_MODELVIEW modelviewIndexToEnum 1 = Just gl_MODELVIEW1 modelviewIndexToEnum i | 2 <= i && i <= 31 = Just (gl_MODELVIEW2 - 2 + fromIntegral i) | otherwise = Nothing modelviewEnumToIndex :: GLenum -> Maybe GLsizei modelviewEnumToIndex x | x == gl_MODELVIEW = Just 0 | x == gl_MODELVIEW1 = Just 1 | gl_MODELVIEW2 <= x && x <= gl_MODELVIEW31 = Just (fromIntegral (x - (gl_MODELVIEW2 - 2))) | otherwise = Nothing -------------------------------------------------------------------------------- -- 0x8825 through 0x8834 are reserved for draw buffers drawBufferIndexToEnum :: GLsizei -> Maybe GLenum drawBufferIndexToEnum i | 0 <= i && i <= maxDrawBufferIndex = Just (gl_DRAW_BUFFER0 + fromIntegral i) | otherwise = Nothing maxDrawBufferIndex :: GLsizei maxDrawBufferIndex = fromIntegral (gl_DRAW_BUFFER15 - gl_DRAW_BUFFER0) -------------------------------------------------------------------------------- getBoolean1 :: (GLboolean -> a) -> GetPName -> IO a getBoolean1 f n = alloca $ \buf -> do getBooleanv n buf peek1 f buf getBoolean4 :: (GLboolean -> GLboolean -> GLboolean -> GLboolean -> a) -> GetPName -> IO a getBoolean4 f n = allocaArray 4 $ \buf -> do getBooleanv n buf peek4 f buf getBooleanv :: GetPName -> Ptr GLboolean -> IO () getBooleanv = makeGetter glGetBooleanv {-# INLINE makeGetter #-} makeGetter :: (GLenum -> Ptr a -> IO ()) -> GetPName -> Ptr a -> IO () makeGetter f = maybe (const recordInvalidEnum) f . marshalGetPName -------------------------------------------------------------------------------- getInteger1 :: (GLint -> a) -> GetPName -> IO a getInteger1 f n = alloca $ \buf -> do getIntegerv n buf peek1 f buf getInteger2 :: (GLint -> GLint -> a) -> GetPName -> IO a getInteger2 f n = allocaArray 2 $ \buf -> do getIntegerv n buf peek2 f buf getInteger4 :: (GLint -> GLint -> GLint -> GLint -> a) -> GetPName -> IO a getInteger4 f n = allocaArray 4 $ \buf -> do getIntegerv n buf peek4 f buf getIntegerv :: GetPName -> Ptr GLint -> IO () getIntegerv = maybe (const recordInvalidEnum) glGetIntegerv . marshalGetPName -------------------------------------------------------------------------------- getEnum1 :: (GLenum -> a) -> GetPName -> IO a getEnum1 f n = alloca $ \buf -> do getIntegerv n buf peek1 f (castPtr buf) -------------------------------------------------------------------------------- getSizei1 :: (GLsizei -> a) -> GetPName -> IO a getSizei1 f n = alloca $ \buf -> do getIntegerv n buf peek1 f (castPtr buf) getSizei2 :: (GLsizei -> GLsizei -> a) -> GetPName -> IO a getSizei2 f n = allocaArray 2 $ \buf -> do getIntegerv n buf peek2 f (castPtr buf) -------------------------------------------------------------------------------- getFloat1 :: (GLfloat -> a) -> GetPName -> IO a getFloat1 f n = alloca $ \buf -> do getFloatv n buf peek1 f buf getFloat2 :: (GLfloat -> GLfloat -> a) -> GetPName -> IO a getFloat2 f n = allocaArray 2 $ \buf -> do getFloatv n buf peek2 f buf getFloat3 :: (GLfloat -> GLfloat -> GLfloat -> a) -> GetPName -> IO a getFloat3 f n = allocaArray 3 $ \buf -> do getFloatv n buf peek3 f buf getFloat4 :: (GLfloat -> GLfloat -> GLfloat -> GLfloat -> a) -> GetPName -> IO a getFloat4 f n = allocaArray 4 $ \buf -> do getFloatv n buf peek4 f buf getFloatv :: GetPName -> Ptr GLfloat -> IO () getFloatv = maybe (const recordInvalidEnum) glGetFloatv . marshalGetPName -------------------------------------------------------------------------------- getClampf1 :: (GLclampf -> a) -> GetPName -> IO a getClampf1 f n = alloca $ \buf -> do getFloatv n buf peek1 f (castPtr buf) getClampf4 :: (GLclampf -> GLclampf -> GLclampf -> GLclampf -> a) -> GetPName -> IO a getClampf4 f n = allocaArray 4 $ \buf -> do getFloatv n buf peek4 f (castPtr buf) -------------------------------------------------------------------------------- getDouble1 :: (GLdouble -> a) -> GetPName -> IO a getDouble1 f n = alloca $ \buf -> do getDoublev n buf peek1 f buf getDouble2 :: (GLdouble -> GLdouble -> a) -> GetPName -> IO a getDouble2 f n = allocaArray 2 $ \buf -> do getDoublev n buf peek2 f buf getDouble4 :: (GLdouble -> GLdouble -> GLdouble -> GLdouble -> a) -> GetPName -> IO a getDouble4 f n = allocaArray 4 $ \buf -> do getDoublev n buf peek4 f buf getDoublev :: GetPName -> Ptr GLdouble -> IO () getDoublev = maybe (const recordInvalidEnum) glGetDoublev . marshalGetPName -------------------------------------------------------------------------------- getClampd1 :: (GLclampd -> a) -> GetPName -> IO a getClampd1 f n = alloca $ \buf -> do getDoublev n buf peek1 f (castPtr buf) getClampd2 :: (GLclampd -> GLclampd -> a) -> GetPName -> IO a getClampd2 f n = allocaArray 2 $ \buf -> do getDoublev n buf peek2 f (castPtr buf) -------------------------------------------------------------------------------- maybeNullPtr :: b -> (Ptr a -> b) -> Ptr a -> b maybeNullPtr n f ptr | ptr == nullPtr = n | otherwise = f ptr -------------------------------------------------------------------------------- newtype AttribLocation = AttribLocation GLuint deriving ( Eq, Ord, Show ) -------------------------------------------------------------------------------- data GetVertexAttribPName = GetVertexAttribArrayEnabled | GetVertexAttribArraySize | GetVertexAttribArrayStride | GetVertexAttribArrayType | GetVertexAttribArrayNormalized | GetCurrentVertexAttrib | GetVertexAttribArrayBufferBinding | GetVertexAttribArrayInteger marshalGetVertexAttribPName :: GetVertexAttribPName -> GLenum marshalGetVertexAttribPName x = case x of GetVertexAttribArrayEnabled -> gl_VERTEX_ATTRIB_ARRAY_ENABLED GetVertexAttribArraySize -> gl_VERTEX_ATTRIB_ARRAY_SIZE GetVertexAttribArrayStride -> gl_VERTEX_ATTRIB_ARRAY_STRIDE GetVertexAttribArrayType -> gl_VERTEX_ATTRIB_ARRAY_TYPE GetVertexAttribArrayNormalized -> gl_VERTEX_ATTRIB_ARRAY_NORMALIZED GetCurrentVertexAttrib -> gl_CURRENT_VERTEX_ATTRIB GetVertexAttribArrayBufferBinding -> gl_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING GetVertexAttribArrayInteger -> gl_VERTEX_ATTRIB_ARRAY_INTEGER -------------------------------------------------------------------------------- getVertexAttribInteger1 :: (GLint -> b) -> AttribLocation -> GetVertexAttribPName -> IO b getVertexAttribInteger1 f (AttribLocation location) n = alloca $ \buf -> do glGetVertexAttribiv location (marshalGetVertexAttribPName n) buf peek1 f buf getVertexAttribEnum1 :: (GLenum -> b) -> AttribLocation -> GetVertexAttribPName -> IO b getVertexAttribEnum1 f = getVertexAttribInteger1 (f . fromIntegral) getVertexAttribBoolean1 :: (GLboolean -> b) -> AttribLocation -> GetVertexAttribPName -> IO b getVertexAttribBoolean1 f = getVertexAttribInteger1 (f . fromIntegral) getVertexAttribFloat4 :: (GLfloat -> GLfloat -> GLfloat -> GLfloat -> b) -> AttribLocation -> GetVertexAttribPName -> IO b getVertexAttribFloat4 f (AttribLocation location) n = alloca $ \buf -> do glGetVertexAttribfv location (marshalGetVertexAttribPName n) buf peek4 f buf getVertexAttribIInteger4 :: (GLint -> GLint -> GLint -> GLint -> b) -> AttribLocation -> GetVertexAttribPName -> IO b getVertexAttribIInteger4 f (AttribLocation location) n = alloca $ \buf -> do glGetVertexAttribIiv location (marshalGetVertexAttribPName n) buf peek4 f buf getVertexAttribIuInteger4 :: (GLuint -> GLuint -> GLuint -> GLuint -> b) -> AttribLocation -> GetVertexAttribPName -> IO b getVertexAttribIuInteger4 f (AttribLocation location) n = alloca $ \buf -> do glGetVertexAttribIuiv location (marshalGetVertexAttribPName n) buf peek4 f buf -------------------------------------------------------------------------------- data GetVertexAttribPointerPName = VertexAttribArrayPointer marshalGetVertexAttribPointerPName :: GetVertexAttribPointerPName -> GLenum marshalGetVertexAttribPointerPName x = case x of VertexAttribArrayPointer -> gl_VERTEX_ATTRIB_ARRAY_POINTER -------------------------------------------------------------------------------- getVertexAttribPointer :: AttribLocation -> GetVertexAttribPointerPName -> IO (Ptr a) getVertexAttribPointer (AttribLocation location) n = alloca $ \buf -> do glGetVertexAttribPointerv location (marshalGetVertexAttribPointerPName n) buf peek buf