!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ SafeNone+ZDetectable errors.Enum argument out of range.Integer argument out of range.#Operation illegal in current state.Framebuffer is not complete.jCheck for a GL Error. This call has the semantics of a dequeue. If an error is returned, then calling getGLError again may return more errors that have "stacked up." When it returns Nothing then there are no more errors to report. An error indicates that a bug in your code caused incorrect ussage of the API or that the implementation has run out of memory.*It has been suggested that using this after every single GL command may adversely affect performance (not to mention be very tedious). Since there is no reasonable way to recover from a GL error, a good idea might be to check this once per frame or even less often, and respond with a core dump.Throws an exception if  returns non-Nothing. Safe-./INSix values, one on each side.      NoneMappable to GL enums.None <The size and interpretation of a vertex attribute component. 4-byte float signed byte unsigned byte2-byte signed integer2-byte unsigned integer4-byte signed integer4-byte unsigned integerThe name of a vertex input to a program combined with the component format and number of components for that attribute in the vertex data. Alternatively the size of an unused section of the data in bytes.AName, component count and component format of a vertex attribute.6Size in bytes of an unused section of the vertex data. gThis configures the currently bound VAO. It calls glVertexAttribPointer and glEnableVertexAttribArray.   None!Blending factors.0Blending functions.1 the default4Blending parameters.:7Enable blending with the specified blending parameters.;Disable alpha blending.<ZThis blending configuration is suitable for ordinary alpha blending transparency effects. mBlending { sFactor = BlendSourceAlpha , dFactor = BlendOneMinusSourceAlpha , blendFunc = FuncAdd } !"#$%&'()*+,-./0123456789:;<!"#$%&'()*+,-./0123456789:;<:;<456789!"#$%&'()*+,-./0123!"#$%&'()*+,-./0123456789:;<None =,Modification action for the stencil buffer. > Do nothing.? Set to zero.@,Write the ref value passed to enableStencil.CBitwise complement.F-The stencil test passes under what condition.OIConfiguration of the stencil test and associated stencil buffer updating.W;Enable the stencil test with a set of operating parameters.XJDisable the stencil test and updates to the stencil buffer, if one exists.Y(Clear the stencil buffer with all zeros.Z In this basic configuration of the stencil, anything rendered will create a silhouette of 1s in the stencil buffer. Attempting to render a second time into the silhouette will have no effect because the stencil test will fail (ref=1 isn't greater than buffer=1). @def { func = Greater , ref = 1 , onBothPass = Replace } The default state of the stencil, if it were simply enabled, would be to always pass and update nothing in the buffer. It would have no effect on rendering.!=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZWXYZOPQRSTUVFGHIJKLMN=>?@ABCDE =>?@ABCDEFGHIJKLMNOPQRSTUVWXYZNone[8How indices are packed in an ElementArray buffer object.\ Each index is one unsigned byte.]&Each index is a two byte unsigned int.^'Each index is a four byte unsigned int._$A rectangular section of the window.eFace culling modes.wPEnable the scissor test. Graphics outside the scissor box will not be rendered.xDisable the scissor test.yEnable face culling. The argument specifies whether front faces, back faces, or both will be omitted from rendering. If both front and back faces are culled you can still render points and lines.z@Disable face culling. Front and back faces will now be rendered.{GSet the viewport. The default viewport simply covers the entire window.|PAllow rendering commands to modify the color buffer of the current framebuffer.}"Disable rendering to color buffer.~Clear the color buffer of the current framebuffer with the specified color. Has no effect if writing to the color buffer is disabled.Enable the depth test. Attempting to render pixels with a depth value greater than the depth buffer at those pixels will have no effect. Otherwise the depth in the buffer will get updated to the new pixel's depth.0Disable the depth test and depth buffer updates.4Clear the depth buffer with the maximum depth value.+[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'ijklmnopqrstuvwxyz{efgh_`abcd[\]^|}~ [\]^_`abcdefghijklmnopqrstuvwxyz{|}~NoneHandle to a shader object.Handle to a shader program.;Handle to a texture object. It may be a Tex2D or a cubemap.sAn RBO is a kind of image object used for rendering. The only thing you can do with an RBO is attach it to an FBO.A framebuffer object is an alternative rendering destination. Once an FBO is bound to framebuffer binding target, it is possible to attach images (textures or RBOs) for color, depth, or stencil rendering.=Handle to a buffer object, such as a VBO or an element array.Handle to a VAO.   None}Create a new VAO. The only thing you can do with a VAO is bind it to the vertex array binding target (bindVAO) or delete it. Delete a VAO.cAssign the VAO to the vertex array binding target. The VAO already bound will be replaced, if any. NoneN 3Usage hint for allocation of buffer object storage.Data will seldomly change.Data will change.Data will change very often.Use this to create VBOs or element arrays from raw data. Choose the usage hint based on how often you expect to modify the VBO's contents.WModify the data in the currently bound VBO starting from the specified index in bytes._Modify contents in the currently bound element array starting at the specified index in bytes.Delete a buffer object.gBind a VBO to the array buffer binding target. The buffer object bound there will be replaced, if any.Assign an element array to the element array binding target. It will replace the buffer object already bound there, if any. The binding will be remembered in the currently bound VAO.  None+RThe error message emitted by the driver when shader compilation or linkage fails.,Either a vertex shader or a fragment shader.Same as  but does not throw exceptions.Delete a program.Compile the code for a vertex shader and a fragment shader, then link them into a new program. If the compiler or linker fails it will throw a ProgramError.\Install a program into the rendering pipeline. Replaces the program already in use, if any.vertex shader source codefragment shader source code None NoneTexture wrapping modes.#Tile the texture past the boundary.-Tile the texture but mirror every other tile.2Use the edge color for anything past the boundary.Texture filtering modes.No interpolation.Linear interpolation.Create a new 2D texture from raw image data, its dimensions, and the assumed image format. The dimensions should be powers of 2.]Create a new cubemap texture from six raw data sources. Each side will have the same format.ACreate an empty texture with the specified dimensions and format._Create a cubemap texture where each of the six sides has the specified dimensions and format. Delete a texture.ZBind a 2D texture to the 2D texture binding target and the currently active texture unit.dBind a cubemap texture to the cubemap texture binding target and the currently active texture unit.1Set the active texture unit. The default is zero.WSet the filtering for the 2D texture currently bound to the 2D texture binding target.aSet the filtering for the cubemap texture currently bound to the cubemap texture binding target.[Set the wrapping mode for the 2D texture currently bound to the 2D texture binding target.Set the wrapping mode for the cubemap texture currently bound to the cubemap texture binding target. Because no filtering occurs between cube faces you probably want ClampToEdge.NoneIN ^Binds an FBO to the framebuffer binding target. Replaces the framebuffer already bound there.@Binds the default framebuffer to the framebuffer binding target.yCreate a new framebuffer object. Before the framebuffer can be used for rendering it must have a color image attachment.Delete an FBO.RAttach a 2D texture to the FBO currently bound to the framebuffer binding target.lAttach one of the sides of a cube map texture to the FBO currently bound to the framebuffer binding target.LAttach an RBO to the FBO currently bound to the framebuffer binding target.JCreate a new renderbuffer object with the specified dimensions and format.Delete an RBO. None  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  ijklmnopqrstuv{wxyz_`abcdefgh[\]^|}~WXYZOPQRSTUVFGHIJKLMN=>?@ABCDE:;<456789!"#$%&'()*+,-./0123 !"#$%&'()*+,-./0123456789:;<=>?@ABCDDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmmnopqrstuvwxyz{|}~                        FgFOFzYLbVYFThvvujirJXGraphics.GL.Low.ErrorGraphics.GL.Low.CubeGraphics.GL.Low.ClassesGraphics.GL.Low.VertexAttribGraphics.GL.Low.BlendingGraphics.GL.Low.StencilGraphics.GL.Low.RenderGraphics.GL.Low.TypesGraphics.GL.Low.VAOGraphics.GL.Low.BufferObjectGraphics.GL.Low.ShaderGraphics.GL.Low.CommonGraphics.GL.Low.TextureGraphics.GL.Low.Framebuffer$Graphics.GL.Low.EntirePictureUpFrontGraphics.GL.LowGLError InvalidEnum InvalidValueInvalidOperationInvalidFramebufferOperation OutOfMemory getGLErrorassertNoGLErrorCube cubeRightcubeLeftcubeTop cubeBottom cubeFrontcubeBack $fMonoidCube$fApplicativeCubeToGLtoGL $fToGLBoolDataTypeGLFloatGLByteGLUnsignedByteGLShortGLUnsignedShortGLInt GLUnsignedInt LayoutElementAttribUnusedsetVertexLayout BlendFactorBlendOne BlendZeroBlendSourceColorBlendOneMinusSourceColorBlendDestColorBlendOneMinusDestColorBlendSourceAlphaBlendOneMinusSourceAlphaBlendDestAlphaBlendOneMinusDestAlphaBlendConstantColorBlendOneMinusConstantColorBlendConstantAlphaBlendOneMinusConstantAlpha BlendEquationFuncAdd FuncSubtractFuncReverseSubtractBlendingsFactordFactor blendFunc blendColorenableBlendingdisableBlending basicBlending StencilOpKeepZeroReplace Increment DecrementInvert IncrementWrap DecrementWrap StencilFuncNeverLess LessOrEqualGreaterGreaterOrEqualEqualNotEqualAlwaysStencilfuncrefmask onStencilFail onDepthFail onBothPass enableStencildisableStencilclearStencilBuffer basicStencil IndexFormat UByteIndices UShortIndices UIntIndicesViewport viewportX viewportY viewportW viewportHCulling CullFrontCullBackCullFrontAndBack drawPoints drawLines drawLineStrip drawLineLoop drawTrianglesdrawTriangleStripdrawTriangleFandrawIndexedPointsdrawIndexedLinesdrawIndexedLineStripdrawIndexedLineLoopdrawIndexedTrianglesdrawIndexedTriangleStripdrawIndexedTriangleFanenableScissorTestdisableScissorTest enableCullingdisableCulling setViewportenableColorWritingdisableColorWritingclearColorBufferenableDepthTestdisableDepthTestclearDepthBuffer ImageFormatRGBRGBAAlpha LuminanceLuminanceAlphaDepth24Depth24Stencil8Shader fromShaderProgram fromProgramTexture texObjectName texFormatRBO rboObjectName rboFormatFBOfromFBO BufferObjectfromBufferObjectVAOfromVAO$fToGLImageFormatnewVAO deleteVAObindVAO UsageHint StaticDraw DynamicDraw StreamDrawnewBufferObject updateVBOupdateElementArraydeleteBufferObjectbindVBObindElementArray ProgramErrorVertexShaderErrorFragmentShaderError LinkErrornewProgramSafe deleteProgram newProgram useProgram setUniform1f setUniform2f setUniform3f setUniform4f setUniform1i setUniform2i setUniform3i setUniform4i setUniform44 setUniform33 setUniform22attachmentPointForImageFormat cubeSideCodesWrappingRepeatMirroredRepeat ClampToEdge FilteringNearestLinear newTexture2D newCubeMapnewEmptyTexture2DnewEmptyCubeMap deleteTexture bindTexture2DbindTextureCubeMapsetActiveTextureUnitsetTex2DFilteringsetCubeMapFilteringsetTex2DWrappingsetCubeMapWrappingbindFBObindDefaultFramebuffernewFBO deleteFBO attachTex2D attachCubeMap attachRBOnewRBO deleteRBO $fShowGLError$fExceptionGLErrorelaborateLayout totalLayout sizeOfType$fToGLDataType$fToGLBlendFactor$fToGLBlendEquationdefaultStencil$fToGLStencilOp$fToGLStencilFunc drawArrays drawIndexed$fToGLIndexFormat $fToGLCullingnewBufferObjectNonClobberinggetArrayBufferBindingupdateBufferObject$fToGLUsageHint ShaderType VertexShaderFragmentShader compileShader setUniform$fExceptionProgramError$fToGLShaderTypegetTex2DBindinggetCubemapBindingloadCubeMapSide$fToGLWrapping$fToGLFilteringgetRenderbufferBinding