-- #hide ----------------------------------------------------------------------------- -- -- Module : Graphics.Rendering.OpenGL.GL.QueryUtils.PName -- Copyright : (c) Sven Panne 2002-2009, Lars Corbijn 2012 -- License : BSD3 -- -- Maintainer : Jason Dagit , Sven Panne -- Stability : -- Portability : -- -- | -- ----------------------------------------------------------------------------- module Graphics.Rendering.OpenGL.GL.QueryUtils.PName ( GetPName(..), GetPName1I(..), GetPName1F(..), GetIPName1I(..), GetPName2I(..), GetPName2F(..), GetPName3I(..), GetPName3F(..), GetPName4I(..), GetPName4F(..), GetIPName4I(..), GetPNameNI(..), PName1I(..), PName1F(..), IPName1I(..), PName2I(..), PName2F(..), PName3F(..), PName4I(..), PName4F(..), PName4ISemiIndexed(..), PNameNI(..), GetPNameMatrix(..), PNameMatrix(..), clipPlaneIndexToEnum, ) 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_FUNC, gl_ALPHA_TEST_REF, gl_AUX_BUFFERS, gl_BLUE_BIAS, gl_BLUE_BITS, gl_BLUE_SCALE, gl_CLAMP_FRAGMENT_COLOR, gl_CLAMP_VERTEX_COLOR, gl_CLIENT_ACTIVE_TEXTURE, gl_COLOR_ARRAY_BUFFER_BINDING, gl_COLOR_ARRAY_SIZE, gl_COLOR_ARRAY_STRIDE, gl_COLOR_ARRAY_TYPE, gl_COLOR_MATERIAL_FACE, gl_COLOR_MATERIAL_PARAMETER, gl_COLOR_MATRIX, gl_COLOR_MATRIX_STACK_DEPTH, 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_BUFFER_BINDING, gl_EDGE_FLAG_ARRAY_STRIDE, gl_FOG_COLOR, 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_INDEX_ARRAY_BUFFER_BINDING, gl_INDEX_ARRAY_STRIDE, gl_INDEX_ARRAY_TYPE, gl_INDEX_CLEAR_VALUE, gl_INDEX_OFFSET, gl_INDEX_SHIFT, gl_INDEX_WRITEMASK, gl_LIGHT_MODEL_AMBIENT, gl_LIGHT_MODEL_COLOR_CONTROL, gl_LIGHT_MODEL_LOCAL_VIEWER, gl_LIGHT_MODEL_TWO_SIDE, gl_LINE_STIPPLE_PATTERN, gl_LINE_STIPPLE_REPEAT, gl_LIST_BASE, gl_LIST_INDEX, gl_LIST_MODE, gl_MAP1_GRID_DOMAIN, gl_MAP1_GRID_SEGMENTS, gl_MAP2_GRID_DOMAIN, gl_MAP2_GRID_SEGMENTS, gl_MAP_COLOR, gl_MAP_STENCIL, gl_MATRIX_MODE, gl_MAX_COLOR_MATRIX_STACK_DEPTH, 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_MODELVIEW_MATRIX, gl_MODELVIEW_STACK_DEPTH, gl_NAME_STACK_DEPTH, 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_HINT, gl_POLYGON_MODE, 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_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_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_RGBA_MODE, gl_SECONDARY_COLOR_ARRAY_BUFFER_BINDING, gl_SECONDARY_COLOR_ARRAY_SIZE, gl_SECONDARY_COLOR_ARRAY_STRIDE, gl_SECONDARY_COLOR_ARRAY_TYPE, gl_SHADE_MODEL, gl_STENCIL_BITS, gl_TEXTURE_COORD_ARRAY_BUFFER_BINDING, gl_TEXTURE_COORD_ARRAY_SIZE, gl_TEXTURE_COORD_ARRAY_STRIDE, gl_TEXTURE_COORD_ARRAY_TYPE, gl_TEXTURE_MATRIX, gl_TEXTURE_STACK_DEPTH, 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_STACK_DEPTH ) import Graphics.Rendering.OpenGL.Raw.ARB.MatrixPalette ( gl_MATRIX_PALETTE, gl_MAX_MATRIX_PALETTE_STACK_DEPTH) 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.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 ) ----------------------------------------------------------------------------- class GetPName p where marshalGetPName :: p -> Maybe GLenum ----------------------------------------------------------------------------- getIntegerv :: GetPName p => p -> Ptr GLint -> IO () getIntegerv = maybe (const recordInvalidEnum) glGetIntegerv . marshalGetPName getFloatv :: GetPName p => p -> Ptr GLfloat -> IO () getFloatv = maybe (const recordInvalidEnum) glGetFloatv . marshalGetPName getDoublev :: GetPName p => p -> Ptr GLdouble -> IO () getDoublev = maybe (const recordInvalidEnum) glGetDoublev . marshalGetPName getBooleanv :: GetPName p => p-> Ptr GLboolean -> IO () getBooleanv = makeGetter glGetBooleanv getBooleaniv :: GetPName p => p -> GLuint -> Ptr GLboolean -> IO () getBooleaniv p i = makeGetter (\e -> glGetBooleani_v e i) p getIntegeriv :: GetPName p => p -> GLuint -> Ptr GLint -> IO () getIntegeriv = maybe (\_ _ -> recordInvalidEnum) glGetIntegeri_v . marshalGetPName {-# INLINE makeGetter #-} makeGetter :: GetPName p => (GLenum -> Ptr a -> IO ()) -> p -> Ptr a -> IO () makeGetter f = maybe (const recordInvalidEnum) f . marshalGetPName ----------------------------------------------------------------------------- class GetPName p => GetPName1I p where getBoolean1 :: (GLboolean -> a) -> p -> IO a getBoolean1 = get1 getBooleanv getInteger1 :: (GLint -> a) -> p -> IO a getInteger1 = get1 getIntegerv getEnum1 :: (GLenum -> a) -> p -> IO a getEnum1 = get1 getIntegerv getSizei1 :: (GLsizei -> a) -> p -> IO a getSizei1 = get1 getIntegerv class GetPName p => GetPName1F p where getFloat1 :: (GLfloat -> a) -> p -> IO a getFloat1 = get1 getFloatv getClampf1 :: (GLclampf -> a) -> p -> IO a getClampf1 = get1 getFloatv getDouble1 :: (GLdouble -> a) -> p -> IO a getDouble1 = get1 getDoublev getClampd1 :: (GLclampd -> a) -> p -> IO a getClampd1 = get1 getDoublev -- | Helper function for the get*1 functions. get1 :: (Storable b, Storable c, GetPName p) => (p -> Ptr c -> IO ()) -> (b -> a) -- ^ Conversion from the casted value to the return value -> p -> IO a get1 g f n = alloca $ \buf -> do g n buf peek1 f (castPtr buf) class GetPName p => GetIPName1I p where getBoolean1i :: (GLboolean -> a) -> p -> GLuint -> IO a getBoolean1i = get1i getBooleaniv getInteger1i :: (GLint -> a) -> p -> GLuint -> IO a getInteger1i = get1i getIntegeriv getEnum1i :: (GLenum -> a) -> p -> GLuint -> IO a getEnum1i = get1i getIntegeriv getSizei1i :: (GLsizei -> a) -> p -> GLuint -> IO a getSizei1i = get1i getIntegeriv -- Indexed helper get1i :: (Storable b, Storable c, GetPName p) => (p -> GLuint -> Ptr c -> IO ()) -> (b -> a) -- ^ Conversion from the casted value to the return value -> p -> GLuint -> IO a get1i g f n i = alloca $ \buf -> do g n i buf peek1 f (castPtr buf) ----------------------------------------------------------------------------- class GetPName p => GetPName2I p where getBoolean2 :: (GLboolean -> GLboolean -> a) -> p -> IO a getBoolean2 = get2 getBooleanv getInteger2 :: (GLint -> GLint -> a) -> p -> IO a getInteger2 = get2 getIntegerv getEnum2 :: (GLenum -> GLenum -> a) -> p -> IO a getEnum2 = get2 getIntegerv getSizei2 :: (GLsizei -> GLsizei -> a) -> p -> IO a getSizei2 = get2 getIntegerv class GetPName p => GetPName2F p where getFloat2 :: (GLfloat -> GLfloat -> a) -> p -> IO a getFloat2 = get2 getFloatv getClampf2 :: (GLclampf -> GLclampf -> a) -> p -> IO a getClampf2 = get2 getFloatv getDouble2 :: (GLdouble -> GLdouble -> a) -> p -> IO a getDouble2 = get2 getDoublev getClampd2 :: (GLclampd -> GLclampd -> a) -> p -> IO a getClampd2 = get2 getDoublev -- | Helper function for the get*2 functions. get2 :: (Storable b, Storable c, GetPName p) => (p -> Ptr c -> IO ()) -> (b -> b -> a) -- ^ Conversion from the casted value to the return value -> p -> IO a get2 g f n = allocaArray 2 $ \buf -> do g n buf peek2 f (castPtr buf) ----------------------------------------------------------------------------- class GetPName p => GetPName3I p where getBoolean3 :: (GLboolean -> GLboolean -> GLboolean -> a) -> p -> IO a getBoolean3 = get3 getBooleanv getInteger3 :: (GLint -> GLint -> GLint -> a) -> p -> IO a getInteger3 = get3 getIntegerv getEnum3 :: (GLenum -> GLenum -> GLenum -> a) -> p -> IO a getEnum3 = get3 getIntegerv getSizei3 :: (GLsizei -> GLsizei -> GLsizei -> a) -> p -> IO a getSizei3 = get3 getIntegerv class GetPName p => GetPName3F p where getFloat3 :: (GLfloat -> GLfloat -> GLfloat -> a) -> p -> IO a getFloat3 = get3 getFloatv getClampf3 :: (GLclampf -> GLclampf -> GLclampf -> a) -> p -> IO a getClampf3 = get3 getFloatv getDouble3 :: (GLdouble -> GLdouble -> GLdouble -> a) -> p -> IO a getDouble3 = get3 getDoublev getClampd3 :: (GLclampd -> GLclampd -> GLclampd -> a) -> p -> IO a getClampd3 = get3 getDoublev -- | Helper function for the get*3 functions. get3 :: (Storable b, Storable c, GetPName p) => (p -> Ptr c -> IO ()) -> (b -> b -> b -> a) -- ^ Conversion from the casted value to the return value -> p -> IO a get3 g f n = allocaArray 3 $ \buf -> do g n buf peek3 f (castPtr buf) ----------------------------------------------------------------------------- class GetPName p => GetPName4I p where getBoolean4 :: (GLboolean -> GLboolean -> GLboolean -> GLboolean -> a) -> p -> IO a getBoolean4 = get4 getBooleanv getInteger4 :: (GLint -> GLint -> GLint -> GLint -> a) -> p -> IO a getInteger4 = get4 getIntegerv getEnum4 :: (GLenum -> GLenum -> GLenum -> GLenum -> a) -> p -> IO a getEnum4 = get4 getIntegerv getSizei4 :: (GLsizei -> GLsizei -> GLsizei -> GLsizei -> a) -> p -> IO a getSizei4 = get4 getIntegerv class GetPName p => GetPName4F p where getFloat4 :: (GLfloat -> GLfloat -> GLfloat -> GLfloat -> a) -> p -> IO a getFloat4 = get4 getFloatv getClampf4 :: (GLclampf -> GLclampf -> GLclampf -> GLclampf -> a) -> p -> IO a getClampf4 = get4 getFloatv getDouble4 :: (GLdouble -> GLdouble -> GLdouble -> GLdouble -> a) -> p -> IO a getDouble4 = get4 getDoublev getClampd4 :: (GLclampd -> GLclampd -> GLclampd -> GLclampd -> a) -> p -> IO a getClampd4 = get4 getDoublev -- | Helper function for the get*4 functions. get4 :: (Storable b, Storable c, GetPName p) => (p -> Ptr c -> IO ()) -> (b -> b -> b -> b -> a) -- ^ Conversion from the casted value to the return value -> p -> IO a get4 g f n = allocaArray 4 $ \buf -> do g n buf peek4 f (castPtr buf) class GetPName p => GetIPName4I p where getBoolean4i :: (GLboolean -> GLboolean -> GLboolean -> GLboolean -> a) -> p -> GLuint -> IO a getBoolean4i = get4i getBooleaniv getInteger4i :: (GLint -> GLint -> GLint -> GLint -> a) -> p -> GLuint -> IO a getInteger4i = get4i getIntegeriv getEnum4i :: (GLenum -> GLenum -> GLenum -> GLenum -> a) -> p -> GLuint -> IO a getEnum4i = get4i getIntegeriv getSizei4i :: (GLsizei -> GLsizei -> GLsizei -> GLsizei -> a) -> p -> GLuint -> IO a getSizei4i = get4i getIntegeriv -- | Helper function for the get*4 functions. get4i :: (Storable b, Storable c, GetPName p) => (p -> GLuint -> Ptr c -> IO ()) -> (b -> b -> b -> b -> a) -- ^ Conversion from the casted value to the return value -> p -> GLuint -> IO a get4i g f n i = allocaArray 4 $ \buf -> do g n i buf peek4 f (castPtr buf) class GetPName p => GetPNameNI p where getIntegerN :: (GLint -> a) -> p -> Int -> IO [a] getIntegerN f p n = allocaArray n $ \buf -> do getIntegerv p buf (map f) `fmap` peekArray n buf ----------------------------------------------------------------------------- class GetPName p => GetPNameMatrix p where getMatrixf :: p -> Ptr GLfloat -> IO () getMatrixf = getFloatv getMatrixd :: p -> Ptr GLdouble -> IO () getMatrixd = getDoublev ----------------------------------------------------------------------------- data PName1I = GetEdgeFlag -- ^ bool | GetRGBAMode -- ^ enum | GetCurrentIndex -- ^ int | GetMaxTextureUnits -- ^ enum -- displaylist | GetListIndex -- ^ enum | GetListMode -- ^ enum | GetMaxListNesting -- ^ sizei | GetListBase -- ^ enum -- rendermode | GetRenderMode -- ^ enum -- framebufferbinding | GetDrawFramebufferBinding -- ^ int | GetReadFramebufferBinding -- ^ int | GetFramebufferBinding -- ^ int -- renderbufferbinding | GetRenderbufferBinding -- ^ int -- hint | GetPerspectiveCorrectionHint -- ^ enum | GetPointSmoothHint -- ^ enum | GetLineSmoothHint -- ^ enum | GetPolygonSmoothHint -- ^ enum | GetFogHint -- ^ enum | GetGenerateMipmapHint -- ^ enum | GetTextureCompressionHint -- ^ enum | GetPackCMYKHint -- ^ enum | GetUnpackCMYKHint -- ^ enum -- vertexarray | GetVertexArrayBinding -- ^ int -- Selction? | GetMaxNameStackDepth -- ^ int | GetNameStackDepth -- ^ int -- ContextProfile | GetContextProfileMask -- ^ enum -- pixelStorage | GetPackSwapBytes -- ^ bool | GetUnpackSwapBytes -- ^ bool | GetPackLSBFirst -- ^ bool | GetUnpackLSBFirst -- ^ bool | GetPackRowLength -- ^ int | GetUnpackRowLength -- ^ int | GetPackSkipRows -- ^ int | GetUnpackSkipRows -- ^ int | GetPackSkipPixels -- ^ int | GetUnpackSkipPixels -- ^ int | GetPackAlignment -- ^ int | GetUnpackAlignment -- ^ int | GetPackImageHeight -- ^ int | GetUnpackImageHeight -- ^ int | GetPackSkipImages -- ^ int | GetUnpackSkipImages -- ^ int -- pixel map | GetPixelMapIToISize -- ^ int | GetPixelMapSToSSize -- ^ int | GetPixelMapIToRSize -- ^ int | GetPixelMapIToGSize -- ^ int | GetPixelMapIToBSize -- ^ int | GetPixelMapIToASize -- ^ int | GetPixelMapRToRSize -- ^ int | GetPixelMapGToGSize -- ^ int | GetPixelMapBToBSize -- ^ int | GetPixelMapAToASize -- ^ int | GetMaxPixelMapTable -- ^ sizei -- shader limits | GetMaxVertexTextureImageUnits -- ^ sizei | GetMaxTextureImageUnits -- ^ sizei | GetMaxCombinedTextureImageUnits -- ^ sizei | GetMaxTextureCoords -- ^ sizei | GetMaxVertexUniformComponents -- ^ sizei | GetMaxFragmentUniformComponents -- ^ sizei | GetMaxVertexAttribs -- ^ sizei | GetMaxVaryingFloats -- ^ sizei -- coordtrans | GetMatrixMode -- ^ enum | GetModelviewStackDepth -- ^ sizei | GetProjectionStackDepth -- ^ sizei | GetTextureStackDepth -- ^ sizei | GetColorMatrixStackDepth -- ^ sizei | GetMaxModelviewStackDepth -- ^ sizei | GetMaxProjectionStackDepth -- ^ sizei | GetMaxTextureStackDepth -- ^ sizei | GetMaxColorMatrixStackDepth -- ^ sizei | GetMaxMatrixPaletteStackDepth -- ^ sizei | GetCurrentMatrixStackDepth -- ^ sizei | GetActiveTexture -- ^ enum -- VertexArrays | GetVertexArraySize -- ^ int | GetVertexArrayType -- ^ enum | GetVertexArrayStride -- ^ int | GetNormalArrayType -- ^ enum | GetNormalArrayStride -- ^ int | GetColorArraySize -- ^ int | GetColorArrayType -- ^ enum | GetColorArrayStride -- ^ int | GetIndexArrayType -- ^ enum | GetIndexArrayStride -- ^ int | GetTextureCoordArraySize -- ^ int | GetTextureCoordArrayType -- ^ enum | GetTextureCoordArrayStride -- ^ int | GetEdgeFlagArrayStride -- ^ int | GetFogCoordArrayType -- ^ enum | GetFogCoordArrayStride -- ^ int | GetSecondaryColorArraySize -- ^ int | GetSecondaryColorArrayType -- ^ enum | GetSecondaryColorArrayStride -- ^ int | GetArrayElementLockCount -- ^ int | GetArrayElementLockFirst -- ^ int | GetClientActiveTexture -- ^ enum | GetMaxElementsVertices -- ^ sizei | GetMaxElementsIndices -- ^ sizei | GetPrimitiveRestartIndex -- ^ int | GetPrimitiveRestartNV -- ^ bool | GetPrimitiveRestartIndexNV -- ^ int -- bufferObjects | GetArrayBufferBinding -- ^ int | GetElementArrayBufferBinding -- ^ int | GetCopyReadBuffer -- ^ int | GetCopyWriteBuffer -- ^ int | GetPixelPackBufferBinding -- ^ int | GetPixelUnpackBufferBinding -- ^ int | GetTransformFeedbackBufferBinding -- ^ int | GetVertexArrayBufferBinding -- ^ int | GetNormalArrayBufferBinding -- ^ int | GetColorArrayBufferBinding -- ^ int | GetIndexArrayBufferBinding -- ^ int | GetTextureCoordArrayBufferBinding -- ^ int | GetEdgeFlagArrayBufferBinding -- ^ int | GetSecondaryColorArrayBufferBinding -- ^ int | GetFogCoordArrayBufferBinding -- ^ int -- clipping | GetMaxClipPlanes -- ^ sizei -- Colors | GetMaxLights -- ^ sizei | GetFrontFace -- ^ enum | GetLightModelLocalViewer -- ^ bool | GetLightModelTwoSide -- ^ bool | GetLightModelColorControl -- ^ enum | GetColorMaterialFace -- ^ enum | GetColorMaterialParameter -- ^ enum | GetShadeModel -- ^ enum | GetFragmentColorClamp -- ^ enum | GetVertexColorClamp -- ^ enum | GetReadColorClamp -- ^ enum -- Evaluators | GetMaxEvalOrder -- ^ int | GetMap1GridSegments -- ^ int -- Fog | GetFogMode -- ^ int => enum | GetFogIndex -- ^ int | GetFogCoordSrc -- ^ int | GetFogDistanceMode -- ^ int => enum -- Framebuffer | GetAuxBuffers -- ^ sizei | GetDoublebuffer -- ^ bool | GetStereo -- ^ bool | GetRedBits -- ^ sizei | GetGreenBits -- ^ sizei | GetBlueBits -- ^ sizei | GetAlphaBits -- ^ sizei | GetStencilBits -- ^ sizei | GetDepthBits -- ^ sizei | GetAccumRedBits -- ^ sizei | GetAccumGreenBits -- ^ sizei | GetAccumBlueBits -- ^ sizei | GetAccumAlphaBits -- ^ sizei | GetDrawBuffer -- ^ enum | GetDrawBufferN GLsizei -- enum | GetMaxDrawBuffers -- ^ sizei | GetIndexWritemask -- ^ int | GetDepthWritemask -- ^ bool | GetStencilWritemask -- ^ bool | GetStencilClearValue -- ^ int -- Program | GetCurrentProgram -- ^ int -- Transformfeedback | GetMaxTransformFeedbackSeparateAttribs -- ^ int | GetMaxTransformFeedbackInterleavedComponents -- ^ int | GetMaxTransformFeedbackSeparateComponents -- ^ int | GetCurrentRasterIndex -- ^ int | GetCurrentRasterPositionValid -- ^ bool -- LineSegment | GetLineStippleRepeat -- ^ int | GetLineStipplePattern -- ^ int -- PerFragment | GetSampleCoverageInvert -- ^ bool | GetAlphaTestFunc -- ^ enum | GetStencilFunc -- ^ enum | GetStencilValueMask -- ^ int | GetStencilRef -- ^ int | GetStencilFail -- ^ enum | GetStencilPassDepthFail -- ^ enum | GetStencilPassDepthPass -- ^ enum | GetActiveStencilFace -- ^ enum | GetLogicOpMode -- ^ enum | GetBlendDst -- ^ enum | GetBlendSrc -- ^ enum | GetBlendSrcRGB -- ^ enum | GetBlendSrcAlpha -- ^ enum | GetBlendDstRGB -- ^ enum | GetBlendDstAlpha -- ^ enum | GetBlendEquation -- ^ enum | GetBlendEquationAlpha -- ^ enum | GetDepthFunc -- ^ enum | GetMapColor -- ^ bool | GetMapStencil -- ^ bool | GetIndexShift -- ^ int | GetIndexOffset -- ^ int -- Polygons -- ^ enum | GetCullFaceMode -- TextureSpecification | GetNumCompressedTextureFormats -- ^ int | GetMaxTextureSize -- ^ int | GetMax3DTextureSize -- ^ int | GetMaxCubeMapTextureSize -- ^ int | GetMaxRectangleTextureSize -- ^ int -- ReadCopyPixels | GetReadBuffer -- ^ enum -- Texture Objects | GetTextureBinding1D -- ^ int\/enum | GetTextureBinding2D -- ^ int\/enum | GetTextureBinding3D -- ^ int\/enum | GetTextureBindingCubeMap -- ^ int\/enum | GetTextureBindingRectangle -- ^ int\/enum -- Antialiasing | GetSubpixelBits -- ^ sizei | GetSamples -- ^ sizei | GetSampleBuffers -- ^ sizei instance GetPName1I PName1I where instance GetPName PName1I where marshalGetPName pn = case pn of GetEdgeFlag -> Just gl_EDGE_FLAG GetRGBAMode -> Just gl_RGBA_MODE GetCurrentIndex -> Just gl_CURRENT_INDEX GetMaxTextureUnits -> Just gl_MAX_TEXTURE_UNITS -- displaylist GetListIndex -> Just gl_LIST_INDEX GetListMode -> Just gl_LIST_MODE GetMaxListNesting -> Just gl_MAX_LIST_NESTING GetListBase -> Just gl_LIST_BASE -- rendermode GetRenderMode -> Just gl_RENDER_MODE -- framebufferbinding GetDrawFramebufferBinding -> Just gl_DRAW_FRAMEBUFFER_BINDING GetReadFramebufferBinding -> Just gl_READ_FRAMEBUFFER_BINDING GetFramebufferBinding -> Just gl_FRAMEBUFFER_BINDING -- renderbufferbinding GetRenderbufferBinding -> Just gl_RENDERBUFFER_BINDING -- hint 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 GetPackCMYKHint -> Just gl_PACK_CMYK_HINT GetUnpackCMYKHint -> Just gl_UNPACK_CMYK_HINT GetVertexArrayBinding -> Just gl_VERTEX_ARRAY_BINDING -- Selection ? GetMaxNameStackDepth -> Just gl_MAX_NAME_STACK_DEPTH GetNameStackDepth -> Just gl_NAME_STACK_DEPTH -- ContextProfile GetContextProfileMask -> Just gl_CONTEXT_PROFILE_MASK --pixel storage GetPackSwapBytes -> Just gl_PACK_SWAP_BYTES GetUnpackSwapBytes -> Just gl_UNPACK_SWAP_BYTES GetPackLSBFirst -> Just gl_PACK_LSB_FIRST GetUnpackLSBFirst -> Just gl_UNPACK_LSB_FIRST GetPackRowLength -> Just gl_PACK_ROW_LENGTH GetUnpackRowLength -> Just gl_UNPACK_ROW_LENGTH GetPackSkipRows -> Just gl_PACK_SKIP_ROWS GetUnpackSkipRows -> Just gl_UNPACK_SKIP_ROWS GetPackSkipPixels -> Just gl_PACK_SKIP_PIXELS GetUnpackSkipPixels -> Just gl_UNPACK_SKIP_PIXELS GetPackAlignment -> Just gl_PACK_ALIGNMENT GetUnpackAlignment -> Just gl_UNPACK_ALIGNMENT GetPackSkipImages -> Just gl_PACK_SKIP_IMAGES GetUnpackSkipImages -> Just gl_UNPACK_SKIP_IMAGES GetPackImageHeight -> Just gl_PACK_IMAGE_HEIGHT GetUnpackImageHeight -> Just gl_UNPACK_IMAGE_HEIGHT -- pixelmap 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 GetMaxPixelMapTable -> Just gl_MAX_PIXEL_MAP_TABLE -- shader limits GetMaxVertexTextureImageUnits -> Just gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS GetMaxTextureImageUnits -> Just gl_MAX_TEXTURE_IMAGE_UNITS GetMaxCombinedTextureImageUnits -> Just gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS GetMaxTextureCoords -> Just gl_MAX_TEXTURE_COORDS GetMaxVertexUniformComponents -> Just gl_MAX_VERTEX_UNIFORM_COMPONENTS GetMaxFragmentUniformComponents -> Just gl_MAX_FRAGMENT_UNIFORM_COMPONENTS GetMaxVaryingFloats -> Just gl_MAX_VARYING_COMPONENTS GetMaxVertexAttribs -> Just gl_MAX_VERTEX_ATTRIBS -- coordtrans GetMatrixMode -> Just gl_MATRIX_MODE GetModelviewStackDepth -> Just gl_MODELVIEW_STACK_DEPTH GetProjectionStackDepth -> Just gl_PROJECTION_STACK_DEPTH GetTextureStackDepth -> Just gl_TEXTURE_STACK_DEPTH GetColorMatrixStackDepth -> Just gl_COLOR_MATRIX_STACK_DEPTH GetMaxModelviewStackDepth -> Just gl_MAX_MODELVIEW_STACK_DEPTH GetMaxProjectionStackDepth -> Just gl_MAX_PROJECTION_STACK_DEPTH GetMaxTextureStackDepth -> Just gl_MAX_TEXTURE_STACK_DEPTH GetMaxColorMatrixStackDepth -> Just gl_MAX_COLOR_MATRIX_STACK_DEPTH GetMaxMatrixPaletteStackDepth -> Just gl_MAX_MATRIX_PALETTE_STACK_DEPTH GetCurrentMatrixStackDepth -> Just gl_CURRENT_MATRIX_STACK_DEPTH GetActiveTexture -> Just gl_ACTIVE_TEXTURE -- vertexarrays 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 GetArrayElementLockCount -> Just gl_ARRAY_ELEMENT_LOCK_COUNT GetArrayElementLockFirst -> Just gl_ARRAY_ELEMENT_LOCK_FIRST GetClientActiveTexture -> Just gl_CLIENT_ACTIVE_TEXTURE GetMaxElementsVertices -> Just gl_MAX_ELEMENTS_VERTICES GetMaxElementsIndices -> Just gl_MAX_ELEMENTS_INDICES GetPrimitiveRestartIndex -> Just gl_PRIMITIVE_RESTART_INDEX GetPrimitiveRestartNV -> Just gl_PRIMITIVE_RESTART_NV GetPrimitiveRestartIndexNV -> Just gl_PRIMITIVE_RESTART_INDEX_NV -- bufferobjects GetArrayBufferBinding -> Just gl_ARRAY_BUFFER_BINDING GetElementArrayBufferBinding -> Just gl_ELEMENT_ARRAY_BUFFER_BINDING GetCopyReadBuffer -> Just gl_COPY_READ_BUFFER GetCopyWriteBuffer -> Just gl_COPY_WRITE_BUFFER GetPixelPackBufferBinding -> Just gl_PIXEL_PACK_BUFFER_BINDING GetPixelUnpackBufferBinding -> Just gl_PIXEL_UNPACK_BUFFER_BINDING GetTransformFeedbackBufferBinding -> Just gl_TRANSFORM_FEEDBACK_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 -- clipping GetMaxClipPlanes -> Just gl_MAX_CLIP_DISTANCES -- Colors GetMaxLights -> Just gl_MAX_LIGHTS GetFrontFace -> Just gl_FRONT_FACE GetLightModelLocalViewer -> Just gl_LIGHT_MODEL_LOCAL_VIEWER GetLightModelTwoSide -> Just gl_LIGHT_MODEL_TWO_SIDE GetLightModelColorControl -> Just gl_LIGHT_MODEL_COLOR_CONTROL GetColorMaterialFace -> Just gl_COLOR_MATERIAL_FACE GetColorMaterialParameter -> Just gl_COLOR_MATERIAL_PARAMETER GetShadeModel -> Just gl_SHADE_MODEL GetVertexColorClamp -> Just gl_CLAMP_VERTEX_COLOR GetFragmentColorClamp -> Just gl_CLAMP_FRAGMENT_COLOR GetReadColorClamp -> Just gl_CLAMP_READ_COLOR -- Evaluators GetMaxEvalOrder -> Just gl_MAX_EVAL_ORDER GetMap1GridSegments -> Just gl_MAP1_GRID_SEGMENTS -- Fog GetFogMode -> Just gl_FOG_MODE GetFogIndex -> Just gl_FOG_INDEX GetFogCoordSrc -> Just gl_FOG_COORD_SRC GetFogDistanceMode -> Just gl_FOG_DISTANCE_MODE -- Framebuffer GetAuxBuffers -> Just gl_AUX_BUFFERS GetDoublebuffer -> Just gl_DOUBLEBUFFER GetStereo -> Just gl_STEREO 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 GetDrawBuffer -> Just gl_DRAW_BUFFER GetDrawBufferN i -> drawBufferIndexToEnum i GetMaxDrawBuffers -> Just gl_MAX_DRAW_BUFFERS GetIndexWritemask -> Just gl_INDEX_WRITEMASK GetDepthWritemask -> Just gl_DEPTH_WRITEMASK GetStencilWritemask -> Just gl_STENCIL_WRITEMASK GetStencilClearValue -> Just gl_STENCIL_CLEAR_VALUE -- Program GetCurrentProgram -> Just gl_CURRENT_PROGRAM -- Transformfeedback GetMaxTransformFeedbackSeparateAttribs -> Just gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS GetMaxTransformFeedbackSeparateComponents -> Just gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS GetMaxTransformFeedbackInterleavedComponents -> Just gl_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS -- RasterPos GetCurrentRasterIndex -> Just gl_CURRENT_RASTER_INDEX GetCurrentRasterPositionValid -> Just gl_CURRENT_RASTER_POSITION_VALID -- LineSegment GetLineStipplePattern -> Just gl_LINE_STIPPLE_PATTERN GetLineStippleRepeat -> Just gl_LINE_STIPPLE_REPEAT -- PerFragment GetSampleCoverageInvert -> Just gl_SAMPLE_COVERAGE_INVERT GetAlphaTestFunc -> Just gl_ALPHA_TEST_FUNC GetStencilFunc -> Just gl_STENCIL_FUNC GetStencilValueMask -> Just gl_STENCIL_VALUE_MASK GetStencilRef -> Just gl_STENCIL_REF GetStencilFail -> Just gl_STENCIL_FAIL GetStencilPassDepthFail -> Just gl_STENCIL_PASS_DEPTH_FAIL GetStencilPassDepthPass -> Just gl_STENCIL_PASS_DEPTH_PASS GetActiveStencilFace -> Just gl_ACTIVE_STENCIL_FACE GetLogicOpMode -> Just gl_LOGIC_OP_MODE GetBlendDst -> Just gl_BLEND_DST GetBlendSrc -> Just gl_BLEND_SRC GetBlendDstRGB -> Just gl_BLEND_DST_RGB GetBlendSrcRGB -> Just gl_BLEND_SRC_RGB GetBlendDstAlpha -> Just gl_BLEND_DST_ALPHA GetBlendSrcAlpha -> Just gl_BLEND_SRC_ALPHA GetBlendEquation -> Just gl_BLEND_EQUATION_RGB GetBlendEquationAlpha -> Just gl_BLEND_EQUATION_ALPHA GetDepthFunc -> Just gl_DEPTH_FUNC GetMapColor -> Just gl_MAP_COLOR GetMapStencil -> Just gl_MAP_STENCIL GetIndexShift -> Just gl_INDEX_SHIFT GetIndexOffset -> Just gl_INDEX_OFFSET -- Polygons GetCullFaceMode -> Just gl_CULL_FACE_MODE -- Texture specification GetNumCompressedTextureFormats -> Just gl_NUM_COMPRESSED_TEXTURE_FORMATS GetMaxTextureSize -> Just gl_MAX_TEXTURE_SIZE GetMax3DTextureSize -> Just gl_MAX_3D_TEXTURE_SIZE GetMaxCubeMapTextureSize -> Just gl_MAX_CUBE_MAP_TEXTURE_SIZE GetMaxRectangleTextureSize -> Just gl_MAX_RECTANGLE_TEXTURE_SIZE -- ReadCopyPixels GetReadBuffer -> Just gl_READ_BUFFER -- Texture Objects GetTextureBinding1D -> Just gl_TEXTURE_BINDING_1D GetTextureBinding2D -> Just gl_TEXTURE_BINDING_2D GetTextureBinding3D -> Just gl_TEXTURE_BINDING_3D GetTextureBindingCubeMap -> Just gl_TEXTURE_BINDING_CUBE_MAP GetTextureBindingRectangle -> Just gl_TEXTURE_BINDING_RECTANGLE -- Antialiasing GetSubpixelBits -> Just gl_SUBPIXEL_BITS GetSampleBuffers -> Just gl_SAMPLE_BUFFERS GetSamples -> Just gl_SAMPLES -- 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) ----------------------------------------------------------------------------- data PName1F = GetCurrentFogCoord -- ^ Float1 -- Rasterization | GetZoomX -- ^ Float | GetZoomY -- ^ Float -- Colors | GetMaxShininess -- ^ Float | GetMaxSpotExponent -- ^ Float -- Fog | GetFogStart -- ^ float | GetFogEnd -- ^ float | GetFogDensity -- ^ float -- Framebuffer | GetDepthClearValue -- ^ clampf | GetIndexClearValue -- ^ float -- RasterPos | GetCurrentRasterDistance -- ^ float -- Point | GetPointSizeMin -- ^ float | GetPointSizeMax -- ^ float | GetPointFadeThresholdSize -- ^ float | GetSmoothPointSizeGranularity -- ^ float | GetPointSize -- ^ float -- LineSegment | GetLineWidth -- ^ float | GetSmoothLineWidthGranularity -- ^ float -- PerFragment | GetSampleCoverageValue -- ^ clampf | GetAlphaTestRef -- ^ clampf -- PixelTransfer | GetRedScale -- ^ float | GetGreenScale -- ^ float | GetBlueScale -- ^ float | GetAlphaScale -- ^ float | GetPostConvolutionRedScale -- ^ float | GetPostConvolutionGreenScale -- ^ float | GetPostConvolutionBlueScale -- ^ float | GetPostConvolutionAlphaScale -- ^ float | GetPostColorMatrixRedScale -- ^ float | GetPostColorMatrixGreenScale -- ^ float | GetPostColorMatrixBlueScale -- ^ float | GetPostColorMatrixAlphaScale -- ^ float | GetRedBias -- ^ float | GetGreenBias -- ^ float | GetBlueBias -- ^ float | GetAlphaBias -- ^ float | GetPostConvolutionRedBias -- ^ float | GetPostConvolutionGreenBias -- ^ float | GetPostConvolutionBlueBias -- ^ float | GetPostConvolutionAlphaBias -- ^ float | GetPostColorMatrixRedBias -- ^ float | GetPostColorMatrixGreenBias -- ^ float | GetPostColorMatrixBlueBias -- ^ float | GetPostColorMatrixAlphaBias -- ^ float | GetDepthScale -- ^ float | GetDepthBias -- ^ float -- Polygons | GetPolygonOffsetFactor -- ^ float | GetPolygonOffsetUnits -- ^ float -- Texture parameters | GetMaxTextureMaxAnisotropy -- ^ float | GetMaxTextureLODBias -- ^ float instance GetPName1F PName1F where instance GetPName PName1F where marshalGetPName pn = case pn of GetCurrentFogCoord -> Just gl_CURRENT_FOG_COORD -- Rasterization GetZoomX -> Just gl_ZOOM_X GetZoomY -> Just gl_ZOOM_Y -- Colors GetMaxShininess -> Just gl_MAX_SHININESS GetMaxSpotExponent -> Just gl_MAX_SPOT_EXPONENT -- Fog GetFogStart -> Just gl_FOG_START GetFogEnd -> Just gl_FOG_END GetFogDensity -> Just gl_FOG_DENSITY -- Framebuffer GetDepthClearValue -> Just gl_DEPTH_CLEAR_VALUE GetIndexClearValue -> Just gl_INDEX_CLEAR_VALUE -- RasterPos GetCurrentRasterDistance -> Just gl_CURRENT_RASTER_DISTANCE -- Point GetPointSizeMin -> Just gl_POINT_SIZE_MIN GetPointSizeMax -> Just gl_POINT_SIZE_MAX GetPointFadeThresholdSize -> Just gl_POINT_FADE_THRESHOLD_SIZE GetSmoothPointSizeGranularity -> Just gl_POINT_SIZE_GRANULARITY GetPointSize -> Just gl_POINT_SIZE -- LineSegment GetSmoothLineWidthGranularity -> Just gl_SMOOTH_LINE_WIDTH_GRANULARITY GetLineWidth -> Just gl_LINE_WIDTH -- PerFragment GetSampleCoverageValue -> Just gl_SAMPLE_COVERAGE_VALUE GetAlphaTestRef -> Just gl_ALPHA_TEST_REF -- PixelTransfer GetRedScale -> Just gl_RED_SCALE GetRedBias -> Just gl_RED_BIAS 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 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 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 GetDepthScale -> Just gl_DEPTH_SCALE GetDepthBias -> Just gl_DEPTH_BIAS -- Polygons GetPolygonOffsetFactor -> Just gl_POLYGON_OFFSET_FACTOR GetPolygonOffsetUnits -> Just gl_POLYGON_OFFSET_UNITS -- Texture parameters GetMaxTextureMaxAnisotropy -> Just gl_MAX_TEXTURE_MAX_ANISOTROPY GetMaxTextureLODBias -> Just gl_MAX_TEXTURE_LOD_BIAS ----------------------------------------------------------------------------- data IPName1I = GetTransformFeedbackBuffer | GetTransformFeedbackBufferStart | GetTransformFeedbackBufferSize instance GetIPName1I IPName1I where instance GetPName IPName1I where marshalGetPName pn = case pn of GetTransformFeedbackBuffer -> Just gl_TRANSFORM_FEEDBACK_BUFFER GetTransformFeedbackBufferSize -> Just gl_TRANSFORM_FEEDBACK_BUFFER_SIZE GetTransformFeedbackBufferStart -> Just gl_TRANSFORM_FEEDBACK_BUFFER_START ----------------------------------------------------------------------------- data PName2I -- coordtrans = GetMaxViewportDims -- ^ sizei -- Evaluators | GetMap2GridSegments -- Polygons | GetPolygonMode instance GetPName2I PName2I where instance GetPName PName2I where marshalGetPName pn = case pn of -- coordtrans GetMaxViewportDims -> Just gl_MAX_VIEWPORT_DIMS -- Evaluators GetMap2GridSegments -> Just gl_MAP2_GRID_SEGMENTS -- Polygons GetPolygonMode -> Just gl_POLYGON_MODE ----------------------------------------------------------------------------- data PName2F -- coordtrans = GetDepthRange -- ^ clamp -- Evaluators | GetMap1GridDomain -- ^ float2? -- Point | GetAliasedPointSizeRange -- ^ float | GetSmoothPointSizeRange -- ^ float -- LineSegments | GetAliasedLineWidthRange -- ^ float | GetSmoothLineWidthRange -- ^ float -- PerFragment | GetDepthBounds -- ^ clampd instance GetPName2F PName2F where instance GetPName PName2F where marshalGetPName pn = case pn of -- coord trans GetDepthRange -> Just gl_DEPTH_RANGE -- Evaluators GetMap1GridDomain -> Just gl_MAP1_GRID_DOMAIN -- Point GetAliasedPointSizeRange -> Just gl_ALIASED_POINT_SIZE_RANGE GetSmoothPointSizeRange -> Just gl_POINT_SIZE_RANGE -- LineSegments GetAliasedLineWidthRange -> Just gl_ALIASED_LINE_WIDTH_RANGE GetSmoothLineWidthRange -> Just gl_SMOOTH_LINE_WIDTH_RANGE -- PerFragment GetDepthBounds -> Just gl_DEPTH_BOUNDS ----------------------------------------------------------------------------- data PName3F = GetCurrentNormal -- ^ Float3 -- Point | GetPointDistanceAttenuation -- ^ float instance GetPName3F PName3F where instance GetPName PName3F where marshalGetPName pn = case pn of GetCurrentNormal -> Just gl_CURRENT_NORMAL -- Point GetPointDistanceAttenuation -> Just gl_POINT_DISTANCE_ATTENUATION ----------------------------------------------------------------------------- data PName4I -- coordtrans = GetViewport -- ^ int -- Framebuffer | GetRGBASignedComponents -- ^ int -- PerFragment | GetScissorBox -- ^ int instance GetPName4I PName4I where instance GetPName PName4I where marshalGetPName pn = case pn of -- coordtrans GetViewport -> Just gl_VIEWPORT -- Framebuffer GetRGBASignedComponents -> Just gl_RGBA_SIGNED_COMPONENTS -- PerFragement GetScissorBox -> Just gl_SCISSOR_BOX -- | Both indexed and unindexed data PName4ISemiIndexed = GetColorWritemask -- ^ bool instance GetPName4I PName4ISemiIndexed where instance GetIPName4I PName4ISemiIndexed where instance GetPName PName4ISemiIndexed where marshalGetPName pn = case pn of GetColorWritemask -> Just gl_COLOR_WRITEMASK ----------------------------------------------------------------------------- data PName4F = GetCurrentColor -- ^ ? | GetCurrentTextureCoords -- ^ Float | GetCurrentSecondaryColor -- ^ Float -- clipping | GetClipPlane GLsizei -- ^ double -- Colors | GetLightModelAmbient -- ^ float -- Evaluators | GetMap2GridDomain -- ^ float? -- Fog | GetFogColor -- ^ clampf -- Framebuffer | GetColorClearValue -- ^ clampf | GetAccumClearValue -- ^ float -- RasterPos | GetCurrentRasterColor -- ^ float | GetCurrentRasterSecondaryColor -- ^ float | GetCurrentRasterTextureCoords -- ^ float | GetCurrentRasterPosition -- ^ float | GetBlendColor -- ^ clampf instance GetPName4F PName4F where instance GetPName PName4F where marshalGetPName pn = case pn of GetCurrentColor -> Just gl_CURRENT_COLOR GetCurrentTextureCoords -> Just gl_CURRENT_TEXTURE_COORDS GetCurrentSecondaryColor -> Just gl_CURRENT_SECONDARY_COLOR -- clipping GetClipPlane i -> clipPlaneIndexToEnum i -- Colors GetLightModelAmbient -> Just gl_LIGHT_MODEL_AMBIENT -- Evaluators GetMap2GridDomain -> Just gl_MAP2_GRID_DOMAIN -- Fog GetFogColor -> Just gl_FOG_COLOR -- Framebuffer GetColorClearValue -> Just gl_COLOR_CLEAR_VALUE GetAccumClearValue -> Just gl_ACCUM_CLEAR_VALUE -- Rasterpos GetCurrentRasterColor -> Just gl_CURRENT_RASTER_COLOR GetCurrentRasterSecondaryColor -> Just gl_CURRENT_RASTER_SECONDARY_COLOR GetCurrentRasterTextureCoords -> Just gl_CURRENT_RASTER_TEXTURE_COORDS GetCurrentRasterPosition -> Just gl_CURRENT_RASTER_POSITION -- PerFragment GetBlendColor -> Just gl_BLEND_COLOR -- 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 ----------------------------------------------------------------------------- data PNameNI = GetCompressedTextureFormats instance GetPNameNI PNameNI where instance GetPName PNameNI where marshalGetPName pn = case pn of GetCompressedTextureFormats -> Just gl_COMPRESSED_TEXTURE_FORMATS ----------------------------------------------------------------------------- data PNameMatrix -- coordtrans = GetModelviewMatrix | GetProjectionMatrix | GetTextureMatrix | GetColorMatrix | GetMatrixPalette instance GetPNameMatrix PNameMatrix where instance GetPName PNameMatrix where marshalGetPName pn = case pn of -- coordtrans GetModelviewMatrix -> Just gl_MODELVIEW_MATRIX GetProjectionMatrix -> Just gl_PROJECTION_MATRIX GetTextureMatrix -> Just gl_TEXTURE_MATRIX GetColorMatrix -> Just gl_COLOR_MATRIX GetMatrixPalette -> Just gl_MATRIX_PALETTE -----------------------------------------------------------------------------