5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  None A f may be translated and rotated to provide a coordinate frame into which 3D points may be transformed.Pan a camera view (turn side-to-side) by an angle given in radians. Panning is about the world's up-axis as captured by the initial camera state (e.g. the positive Y axis for ). Pan a camera view (turn side-to-side) by an angle given in degrees. Panning is about the world's up-axis as captured by the initial camera state (e.g. the positive Y axis for ). Tilt a camera view (up-and-down) by an angle given in radians. Tilting is about the camera's horizontal axis (e.g. the positive X axis for ). Tilt a camera view (up-and-down) by an angle given in degrees. Tilting is about the camera's horizontal axis (e.g. the positive X axis for ). Roll a camera view about its view direction by an angle given in radians. Rolling is about the camera's forward axis (e.g. the negative Z axis for ). Roll a camera view about its view direction by an angle given in degrees. Rolling is about the camera's forward axis (e.g. the negative Z axis for ).2Translate a camera's position by the given vector.Convert degrees to radians.A camera at the origin with its up-axis coincident with the positive Z axis. This is the convention used by the ROS robotics platform.A camera at the origin with its up-axis coincident with the positive Y axis. This is the convention used by "first-person shooter" (fps) video games.$projectionMatrix fov aspect near far produces a perspective projection matrix with the specified vertical field of view (FOV), given in radians, aspect ratio, and near and far clipping planes.'Produce a transformation matrix from a O. This matrix transforms homogenous points into the camera's coordinate frame.     None%Initialize a camera for 2D rendering.BMove the camera side-to-side or up-and-down as in a tracking shot.ZProduce a matrix that transforms homogenous 2D points into the camera's coordinate frame.JRoll a camera view about its view direction by an angle given in degrees.JRoll a camera view about its view direction by an angle given in radians.  NonewithViewport pos sz m runs the action m, after setting the viewport with the given  and r. The viewport is reset to its original state after the action is run, and the result of the action is returned.None1234MA type class for things we can write to uniform locations in shader programs. We can provide instances of this class for types from Linear& without introducing orphan instances.0/None24M0Open mapping from Haskell types to OpenGL types.*A mapping from Haskell types to values of `. This defines how Haskell values may be mapped to values that may be bound to GLSL variables.  Maps each  to its corresponding O. Typically this indicates the element type of composite variable types (e.g. "variableDataType FloatVec2 = Float). Note that this is a partial mapping as we are primarily supporting the use of these types as inputs to GLSL programs where types such as Bool are not supported.* !"#$%&'()*+,-./0123456789:;<=>?@ABCDE *EDCBA@?>=<;:9876543210/.-,+*)( '&%$#"!( !"#$%&'()*+,-./0123456789:;<=>?@ABCDENoneFShort alias for .G Allocate a , and initialize it with the provided action. This action should bind the buffer data, index data (if necessary), and setup vertex attributes.HRun an action with the given  bound.I Delete a .JDelete a list of s.FGHIJFGHIJGHIJFFGHIJNone+K$An exception type for OpenGL errors.L+Check OpenGL error flags and print them on .M+Check OpenGL error flags and print them on Q with the given message as a prefix. If there are no errors, nothing is printed..Prefix each of a list of messages with "GL: ".N/Throw an exception if there is an OpenGL error.OmThrow an exception if there is an OpenGL error. The exception's error message is prefixed with the supplied . KLMNOKLMNOLMNKOKLMNO None 2346=KMPWrapper whose R+ instance treats the pointer underlying a  as an array of s.R%Class for containers of texture data.U#A basic texture information record.[Pixel format of image data.aHelper for constructing a U using Haskell s for image dimensions.b4Create a new 2D texture with uninitialized contents.c+Create a new 2D texture with uninitialized  contents.d+Create a new 2D texture with uninitialized  contents.e)Create a new 2D texture with data from a U.f3Replace a 2D texture's pixel data with data from a U.g5Set texture coordinate wrapping options for both the  and  dimensions of a 2D texture.h0Set texture coordinate wrapping options for the , , and  dimensions of a 3D texture.iJBind each of the given textures to successive texture units at the given  TextureTarget starting with texture unit 0.j]Bind each of the given 2D textures to successive texture units starting with texture unit 0.kBind each of the given textures to the texture unit they are paired with. The given action is run with these bindings, then the texture bindings are reset. If you don't care which texture units are used, consider using i or j.#PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrPQRSTUVWXYZ[\]^_`abcdefghijk#[`_^]\UVWXYZaRSTrqponmPQlbcdefghijkPQRSTUVWXYZ[`_^]\abcdefghijklmnopqr NoneHMsLoad a Ug value from an image file, and supply it to a user-provided function. Supported image formats include png, jpeg, bmp, and gif. See t for most uses.tLoad a 0 from an image file. Supported formats include png, jpeg, bmp, and gif.stststst None u"Load a shader program from a file.v$loadShaderBS fileName shaderType src# loads a shader from source code, src1. The file name is used only for error reporting.wLink shaders into a .xLink shaders into a  with the given action performed after attaching shaders, but before linking the program. This is most commonly used to set the  state variable.yWork with a named uniform shader parameter. Note that this looks up the variable name on each access, so uniform parameters that will be accessed frequently should instead be resolved to a .zSet a  to a scalar value.{Set a < from a list representation of a low-dimensional vector of 7s. Only 2, 3, and 4 dimensional vectors are supported.|xSet a named uniform shader parameter from a nested list matrix representation. Only 3x3 and 4x4 matrices are supported.}qSet a uniform shader location from a nested list matrix representation. Only 3x3 and 4x4 matrices are supported.~)Set a uniform shader location with a 4x4 . uvwxyz{|}~ uvwxyz{|}~ uvwxyz{}|~ uvwxyz{|}~ NoneKRepresentation of a GLSL shader program that has been compiled and linked.Load a  from a vertex and fragment shader source files. the third argument is a tuple of the attribute names and uniform names that will be set in this program. If all attributes and uniforms are desired, consider using .Load a  from a vertex shader source file and a fragment shader source file. The active attributes and uniforms in the linked program are recorded in the .Load a  from vertex and fragment shader source strings. The active attributes and uniforms in the linked program are recorded in the .Load a  from a vertex shader source file and a fragment shader source file. The active attributes and uniforms in the linked program are recorded in the . The supplied  function is applied to the new program after shader objects are attached to the program, but before linking. This supports the use of ! to map fragment shader outputs.Load a 6 from vertex and fragment shader source strings. See  for more information. Helper for  load*Program* variants.Load a  from a list of individual shader program files. The active attributes and uniforms in the linked program are recorded in the Load a  from a list of individual shader program source strings. The active attributes and uniforms in the linked program are recorded in the Get all attributes and uniforms used by a program. Note that unused parameters may be elided by the compiler, and so will not be considered as active.UGet the attribute and uniform locations associated with a list of the names of each.KSet a named uniform parameter associated with a particular shader program.Get the , associated with a named uniform parameter.Set a named vertex attribute's  and .Get the + associated with a named vertex attribute. Enable a named vertex attribute. NonedrawIndexedTris n draws n - using vertex data from the currently bound 8 and indices from the beginning of the currently bound $. Note that there must be at least n * 3 indices in the !NoneM CA class for things we know how to serialize into an OpenGL buffer.Allocate and fill a  from a list of s.Allocate and fill a  from a list of s whose length is explicitly given. This is useful when the list is of known length, as it avoids a traversal to find the length.replaceBuffer target elementsL replaces the buffer data attached to the buffer object currently bound to target7 with the supplied list. Any previous data is deleted.Allocate and fill a ; with the given number of bytes from the supplied pointer.Fill a buffer with a .Fill a buffer with data from a . The application fromForeignPtr target len fptr fills a target  with len elements starting from fptr.Fill a buffer with data from a .replaceVector target vL replaces the buffer data attached to the buffer object currently bound to target with the supplied . Any previous data is deleted. Produce a = value to be used as an offset of the given number of bytes.A zero-offset . Create an  from a source of s. None\ FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijktuvwxyz{|}~t !"#$%#&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ] ] ^ _ ` a a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~    X            GLUtil-0.8Graphics.GLUtilGraphics.GLUtil.Camera3DGraphics.GLUtil.Camera2DGraphics.GLUtil.ViewportGraphics.GLUtil.LinearGraphics.GLUtil.TypeMapping"Graphics.GLUtil.VertexArrayObjectsGraphics.GLUtil.GLErrorGraphics.GLUtil.TexturesGraphics.GLUtil.JuicyTexturesGraphics.GLUtil.ShadersGraphics.GLUtil.ShaderProgramGraphics.GLUtil.DrawingGraphics.GLUtil.BufferObjectsbaseGHC.WordWord32Cameraforwardupward rightward orientationlocationpanRadpantiltRadtiltrollRadrolldollydeg2rad rosCamera fpsCameraprojectionMatrix camMatrixcamera2Dtrack withViewport AsUniform asUniform HasGLTypeglTypeHasVariableType variableTypevariableDataType$fHasGLTypeCFloat$fHasGLTypeFloat$fHasGLTypeCUInt$fHasGLTypeWord32$fHasGLTypeWord16$fHasGLTypeWord8$fHasGLTypeCInt$fHasVariableType[]$fHasVariableTypeV4$fHasVariableTypeV3$fHasVariableTypeV2$fHasVariableTypeV40$fHasVariableTypeV30$fHasVariableTypeV20$fHasVariableTypeV1$fHasVariableTypeV41$fHasVariableTypeV31$fHasVariableTypeV21$fHasVariableTypeV10$fHasVariableTypeV42$fHasVariableTypeV32$fHasVariableTypeV22$fHasVariableTypeV11$fHasVariableTypeV43$fHasVariableTypeV33$fHasVariableTypeV23$fHasVariableTypeV12$fHasVariableTypeV44$fHasVariableTypeV34$fHasVariableTypeV24$fHasVariableTypeV13$fHasVariableTypeCUInt$fHasVariableTypeWord32$fHasVariableTypeInt32$fHasVariableTypeCInt$fHasVariableTypeCFloat$fHasVariableTypeFloatVAOmakeVAOwithVAO deleteVAO deleteVAOsGLError printError printErrorMsg throwError throwErrorMsg ShortString IsPixelDataElem withPixelsTexInfotexWidth texHeighttexColortexDataTexColorTexRGBATexBGRTexRGBTexRGTexMonotexInfo freshTexturefreshTextureWord8freshTextureFloat loadTexture reloadTexture texture2DWrap texture3DWrap withTextureswithTextures2DwithTexturesAt$fIsPixelDataShortString$fIsPixelDataByteString$fIsPixelDataVector$fIsPixelDataStorableArray$fIsPixelDataForeignPtr$fIsPixelDataPtr$fIsPixelData[] readTexInfo readTexture loadShader loadShaderBSlinkShaderProgramlinkShaderProgramWith namedUniform uniformScalar uniformVecnamedUniformMat uniformMat uniformGLMat4 ShaderProgramattribsuniformsprogramsimpleShaderExplicitsimpleShaderExplicitBSsimpleShaderProgramsimpleShaderProgramBSsimpleShaderProgramWithsimpleShaderProgramWithBSloadShaderProgramWithloadShaderProgramWithBSloadShaderProgramloadShaderProgramBS setUniform getUniform setAttrib getAttrib enableAttribdrawIndexedTris BufferSource fromSource makeBuffer makeBufferLen replaceBufferfromPtrfromByteStringfromForeignPtr fromVector replaceVector offsetPtroffset0 bufferIndices$fBufferSourceVector$fBufferSource[]OpenGL-2.9.2.0'Graphics.Rendering.OpenGL.GL.CoordTransPositionSizegetULcastVecComponentcastMatComponent $fAsUniform[]$fAsUniform[]0$fAsUniform[]1$fAsUniform[]2$fAsUniform[]3$fAsUniform[]4$fAsUniform[]5$fAsUniform[]6$fAsUniform[]7$fAsUniform[]8$fAsUniform[]9$fAsUniform[]10 $fAsUniformV4 $fAsUniformV3 $fAsUniformV2$fAsUniformV40$fAsUniformV41$fAsUniformV42$fAsUniformV30$fAsUniformV31$fAsUniformV32$fAsUniformV20$fAsUniformV21$fAsUniformV22 $fAsUniformV1$fAsUniformV10$fAsUniformV11$fAsUniformVertex2$fAsUniformVertex3$fAsUniformVertex4$fAsUniformTexCoord1$fAsUniformTexCoord2$fAsUniformTexCoord3$fAsUniformTexCoord4$fAsUniformNormal3$fAsUniformFogCoord1$fAsUniformColor3$fAsUniformColor4$fAsUniformIndex1$fAsUniformTextureUnit$fAsUniformCFloat$fAsUniformCUInt$fAsUniformCInt.Graphics.Rendering.OpenGL.GL.Shaders.Variables VariableType%Graphics.Rendering.OpenGL.GL.DataTypeDataType/Graphics.Rendering.OpenGL.GL.VertexArrayObjectsVertexArrayObjectGHC.IO.Handle.FDstderr printGLErrorsGHC.BaseString $fShowGLError$fExceptionGLErrorbytestring-0.10.4.0Data.ByteString.Internal ByteStringWord16ghc-prim GHC.TypesIntWord8OpenGLRaw-1.5.0.0#Graphics.Rendering.OpenGL.Raw.TypesGLfloatSTR4Graphics.Rendering.OpenGL.GL.Texturing.TextureObject TextureObject,Graphics.Rendering.OpenGL.GL.Shaders.ProgramProgram3Graphics.Rendering.OpenGL.GL.Shaders.ProgramObjectsbindFragDataLocation,Graphics.Rendering.OpenGL.GL.Shaders.UniformUniformLocationGLmatrix withHMatrixunULIOloadShaderProgramWith' getActives getExplicits'Graphics.Rendering.OpenGL.GL.VertexSpecIntegerHandling)Graphics.Rendering.OpenGL.GL.VertexArraysVertexArrayDescriptor4Graphics.Rendering.OpenGL.GL.QueryUtils.VertexAttribAttribLocationsimpleShaderExplicit'*Graphics.Rendering.OpenGL.GL.PrimitiveMode Triangles*Graphics.Rendering.OpenGL.GL.BufferObjects ArrayBufferElementArrayBuffer BufferObjectForeign.StorableStorableGHC.ForeignPtr ForeignPtr BufferTargetvector-0.10.11.0Data.Vector.StorableVectorGHC.PtrPtr