{-# LANGUAGE CPP #-} -- | definition from gl3.h module Graphics.OpenGLES.Base ( -- * Basic Types GL, GLName, -- ** OpenGL ES 2.0 GLboolean, GLbyte, GLubyte, GLchar, GLshort, GLushort, GLint, GLuint, GLfixed, GLsizei, GLenum, GLintptr, GLsizeiptr, GLbitfield, GLfloat, GLclampf, -- ** OpenGL ES 3.0 GLint64, GLuint64, GLsync, GLhalf, -- * Bindings --isGLProcAvailable, -- ** OpenGL ES 2.0 glActiveTexture, glAttachShader, glBindAttribLocation, glBindBuffer, glBindFramebuffer, glBindRenderbuffer, glBindTexture, glBlendColor, glBlendEquation, glBlendEquationSeparate, glBlendFunc, glBlendFuncSeparate, glBufferData, glBufferSubData, glCheckFramebufferStatus, glClear, glClearColor, glClearDepthf, glClearStencil, glColorMask, glCompileShader, glCompressedTexImage2D, glCompressedTexSubImage2D, glCopyTexImage2D, glCopyTexSubImage2D, glCreateProgram, glCreateShader, glCullFace, glDeleteBuffers, glDeleteFramebuffers, glDeleteProgram, glDeleteRenderbuffers, glDeleteShader, glDeleteTextures, glDepthFunc, glDepthMask, glDepthRangef, glDetachShader, glDisable, glDisableVertexAttribArray, glDrawArrays, glDrawElements, glEnable, glEnableVertexAttribArray, glFinish, glFlush, glFramebufferRenderbuffer, glFramebufferTexture2D, glFrontFace, glGenBuffers, glGenerateMipmap, glGenFramebuffers, glGenRenderbuffers, glGenTextures, glGetActiveAttrib, glGetActiveUniform, glGetAttachedShaders, glGetAttribLocation, glGetBooleanv, glGetBufferParameteriv, glGetError, glGetFloatv, glGetFramebufferAttachmentParameteriv, glGetIntegerv, glGetProgramiv, glGetProgramInfoLog, glGetRenderbufferParameteriv, glGetShaderiv, glGetShaderInfoLog, glGetShaderPrecisionFormat, glGetShaderSource, glGetString, glGetTexParameterfv, glGetTexParameteriv, glGetUniformfv, glGetUniformiv, glGetUniformLocation, glGetVertexAttribfv, glGetVertexAttribiv, glGetVertexAttribPointerv, glHint, glIsBuffer, glIsEnabled, glIsFramebuffer, glIsProgram, glIsRenderbuffer, glIsShader, glIsTexture, glLineWidth, glLinkProgram, glPixelStorei, glPolygonOffset, glReadPixels, glReleaseShaderCompiler, glRenderbufferStorage, glSampleCoverage, glScissor, glShaderBinary, glShaderSource, glStencilFunc, glStencilFuncSeparate, glStencilMask, glStencilMaskSeparate, glStencilOp, glStencilOpSeparate, glTexImage2D, glTexParameterf, glTexParameterfv, glTexParameteri, glTexParameteriv, glTexSubImage2D, glUniform1f, glUniform1fv, glUniform1i, glUniform1iv, glUniform2f, glUniform2fv, glUniform2i, glUniform2iv, glUniform3f, glUniform3fv, glUniform3i, glUniform3iv, glUniform4f, glUniform4fv, glUniform4i, glUniform4iv, glUniformMatrix2fv, glUniformMatrix3fv, glUniformMatrix4fv, glUseProgram, glValidateProgram, glVertexAttrib1f, glVertexAttrib1fv, glVertexAttrib2f, glVertexAttrib2fv, glVertexAttrib3f, glVertexAttrib3fv, glVertexAttrib4f, glVertexAttrib4fv, glVertexAttribPointer, glViewport, -- ** OpenGL ES 3.0 glReadBuffer, glDrawRangeElements, glTexImage3D, glTexSubImage3D, glCopyTexSubImage3D, glCompressedTexImage3D, glCompressedTexSubImage3D, glGenQueries, glDeleteQueries, glIsQuery, glBeginQuery, glEndQuery, glGetQueryiv, glGetQueryObjectuiv, glUnmapBuffer, glGetBufferPointerv, glDrawBuffers, glUniformMatrix2x3fv, glUniformMatrix3x2fv, glUniformMatrix2x4fv, glUniformMatrix4x2fv, glUniformMatrix3x4fv, glUniformMatrix4x3fv, glBlitFramebuffer, glRenderbufferStorageMultisample, glFramebufferTextureLayer, glMapBufferRange, glFlushMappedBufferRange, glBindVertexArray, glDeleteVertexArrays, glGenVertexArrays, glIsVertexArray, glGetIntegeri_v, glBeginTransformFeedback, glEndTransformFeedback, glBindBufferRange, glBindBufferBase, glTransformFeedbackVaryings, glGetTransformFeedbackVarying, glVertexAttribIPointer, glGetVertexAttribIiv, glGetVertexAttribIuiv, glVertexAttribI4i, glVertexAttribI4ui, glVertexAttribI4iv, glVertexAttribI4uiv, glGetUniformuiv, glGetFragDataLocation, glUniform1ui, glUniform2ui, glUniform3ui, glUniform4ui, glUniform1uiv, glUniform2uiv, glUniform3uiv, glUniform4uiv, glClearBufferiv, glClearBufferuiv, glClearBufferfv, glClearBufferfi, glGetStringi, glCopyBufferSubData, glGetUniformIndices, glGetActiveUniformsiv, glGetUniformBlockIndex, glGetActiveUniformBlockiv, glGetActiveUniformBlockName, glUniformBlockBinding, glDrawArraysInstanced, glDrawElementsInstanced, glFenceSync, glIsSync, glDeleteSync, glClientWaitSync, glWaitSync, glGetInteger64v, glGetSynciv, glGetInteger64i_v, glGetBufferParameteri64v, glGenSamplers, glDeleteSamplers, glIsSampler, glBindSampler, glSamplerParameteri, glSamplerParameteriv, glSamplerParameterf, glSamplerParameterfv, glGetSamplerParameteriv, glGetSamplerParameterfv, glVertexAttribDivisor, glBindTransformFeedback, glDeleteTransformFeedbacks, glGenTransformFeedbacks, glIsTransformFeedback, glPauseTransformFeedback, glResumeTransformFeedback, glGetProgramBinary, glProgramBinary, glProgramParameteri, glInvalidateFramebuffer, glInvalidateSubFramebuffer, glTexStorage2D, glTexStorage3D, glGetInternalformativ, -- ** Extensions glGenVertexArraysOES, glBindVertexArrayOES, glDeleteVertexArraysOES, glIsVertexArrayOES, glDrawTexiOES, glMultiDrawArraysEXT, glMultiDrawElementsEXT, glDrawRangeElementsEXT, -- ** OpenGL ES 3.1 glDispatchCompute, glDispatchComputeIndirect, glDrawArraysIndirect, glDrawElementsIndirect, glFramebufferParameteri, glGetFramebufferParameteriv, glGetProgramInterfaceiv, glGetProgramResourceIndex, glGetProgramResourceName, glGetProgramResourceiv, glGetProgramResourceLocation, glUseProgramStages, glActiveShaderProgram, glCreateShaderProgramv, glBindProgramPipeline, glDeleteProgramPipelines, glGenProgramPipelines, glIsProgramPipeline, glGetProgramPipelineiv, glProgramUniform1i, glProgramUniform2i, glProgramUniform3i, glProgramUniform4i, glProgramUniform1ui, glProgramUniform2ui, glProgramUniform3ui, glProgramUniform4ui, glProgramUniform1f, glProgramUniform2f, glProgramUniform3f, glProgramUniform4f, glProgramUniform1iv, glProgramUniform2iv, glProgramUniform3iv, glProgramUniform4iv, glProgramUniform1uiv, glProgramUniform2uiv, glProgramUniform3uiv, glProgramUniform4uiv, glProgramUniform1fv, glProgramUniform2fv, glProgramUniform3fv, glProgramUniform4fv, glProgramUniformMatrix2fv, glProgramUniformMatrix3fv, glProgramUniformMatrix4fv, glProgramUniformMatrix2x3fv, glProgramUniformMatrix3x2fv, glProgramUniformMatrix2x4fv, glProgramUniformMatrix4x2fv, glProgramUniformMatrix3x4fv, glProgramUniformMatrix4x3fv, glValidateProgramPipeline, glGetProgramPipelineInfoLog, glBindImageTexture, glGetBooleani_v, glMemoryBarrier, glMemoryBarrierByRegion, glTexStorage2DMultisample, glGetMultisamplefv, glSampleMaski, glGetTexLevelParameteriv, glGetTexLevelParameterfv, glBindVertexBuffer, glVertexAttribFormat, glVertexAttribIFormat, glVertexAttribBinding, glVertexBindingDivisor ) where import Foreign import Foreign.C.String import Graphics.OpenGLES.Base.Proc (glGetProcAddress) -- * Basic Types -- | IO actions run in GL thread. type GL = IO -- | Name of a shader, program, and variable. type GLName = String -- ** OpenGL ES 2.0 -- | 1bit boolean type GLboolean = Word8 -- | 8bit signed two\'s complement binary integer type GLbyte = Int8 -- | 8bit unsigned binary integer type GLubyte = Word8 -- | (Unused) 8bit characters making up strings type GLchar = Int8 -- | 16bit signed two\'s complement binary integer type GLshort = Int16 -- | 16bit unsigned binary integer type GLushort = Word16 -- | 32bit signed two\'s complement binary integer type GLint = Int32 -- | 32bit unsigned binary integer type GLuint = Word32 -- | 32bit signed two\'s complement 16.16 scaled integer type GLfixed = Int32 -- | 32bit non-negative binary integer size type GLsizei = Int32 -- | 32bit enumerated binary integer value type GLenum = Word32 -- | Pointer-sized signed two\'s complement binary integer type GLintptr = Int -- | Pointer-sized non-negative binary integer size type GLsizeiptr = Int -- | 32bit bit field type GLbitfield = Word32 -- | 32bit floating-point value type GLfloat = Float -- | 32bit floating-point value clamped to [0,1] type GLclampf = Float -- ** OpenGL ES 3.0 -- | 64bit signed two\'s complement binary integer type GLint64 = Int64 -- | 64bit unsigned binary integer type GLuint64 = Word64 -- | Pointer-sized sync object handle type GLsync = Ptr () -- | 16bit half-precision floating-point value encoded in an unsigned scalar type GLhalf = Word16 -- * Bindings {- -- | eglGetProcAddress may return an incremental useless pointer -- if given name starts with \"gl\" but not implemented. isGLProcAvailable :: String -> Bool isGLProcAvailable name = abs (proc `minusPtr` undef) > 0x10000 where proc = castFunPtrToPtr (eglGetProcAddress name) undef = castFunPtrToPtr (eglGetProcAddress "glUndefined") -} -- Declere must-have functions #define STATIC(_procname, _typ) \ foreign import ccall unsafe "_procname" _procname :: _typ; \ -- Workaround for runtime link errors -- TBD unify wrappers by types #define DYNAMIC(_procname, _typ) \ foreign import ccall unsafe "dynamic" unwrap_/**/_procname :: FunPtr (_typ) -> _typ; \ _procname :: _typ; \ _procname = unwrap_/**/_procname (glGetProcAddress "_procname"); \ -- foreign import ccall unsafe "dynamic" -- unwrap_glActiveTexture :: FunPtr (GLenum -> GL ()) -> GLenum -> GL (); -- glActiveTexture :: GLenum -> GL (); -- glActiveTexture = unwrap_glActiveTexture (glGetProcAddress "glActiveTexture"); #if defined(STATIC_ES2) #define GLES2 STATIC #else #define GLES2 DYNAMIC #endif #if defined(STATIC_ES3) #define GLES3 STATIC #else #define GLES3 DYNAMIC #endif #define GLES31 DYNAMIC #define GL_EXT DYNAMIC -- ** OpenGL ES 2.0 GLES2(glActiveTexture, GLenum -> GL ()) GLES2(glAttachShader, GLuint -> GLuint -> GL ()) GLES2(glBindAttribLocation, GLuint -> GLuint -> CString -> GL ()) GLES2(glBindBuffer, GLenum -> GLuint -> GL ()) GLES2(glBindFramebuffer, GLenum -> GLuint -> GL ()) GLES2(glBindRenderbuffer, GLenum -> GLuint -> GL ()) GLES2(glBindTexture, GLenum -> GLuint -> GL ()) GLES2(glBlendColor, GLclampf -> GLclampf -> GLclampf -> GLclampf -> GL ()) GLES2(glBlendEquation, GLenum -> GL ()) GLES2(glBlendEquationSeparate, GLenum -> GLenum -> GL ()) GLES2(glBlendFunc, GLenum -> GLenum -> GL ()) GLES2(glBlendFuncSeparate, GLenum -> GLenum -> GLenum -> GLenum -> GL ()) GLES2(glBufferData, GLenum -> GLsizeiptr -> Ptr () -> GLenum -> GL ()) GLES2(glBufferSubData, GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> GL ()) GLES2(glCheckFramebufferStatus, GLenum -> GL GLenum) GLES2(glClear, GLbitfield -> GL ()) GLES2(glClearColor, GLclampf -> GLclampf -> GLclampf -> GLclampf -> GL ()) GLES2(glClearDepthf, GLclampf -> GL ()) GLES2(glClearStencil, GLint -> GL ()) GLES2(glColorMask, GLboolean -> GLboolean -> GLboolean -> GLboolean -> GL ()) GLES2(glCompileShader, GLuint -> GL ()) --GLES2(glCompressedTexImage2D, GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> GL ()) GLES2(glCompressedTexImage2D, GLenum -> GLint -> GLenum -> GLuint -> GLuint -> GLint -> GLsizei -> CString -> GL ()) GLES2(glCompressedTexSubImage2D, GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> GL ()) GLES2(glCopyTexImage2D, GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GL ()) GLES2(glCopyTexSubImage2D, GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GL ()) GLES2(glCreateProgram, GL GLuint) GLES2(glCreateShader, GLenum -> GL GLuint) GLES2(glCullFace, GLenum -> GL ()) GLES2(glDeleteBuffers, GLsizei -> Ptr GLuint -> GL ()) GLES2(glDeleteFramebuffers, GLsizei -> Ptr GLuint -> GL ()) GLES2(glDeleteProgram, GLuint -> GL ()) GLES2(glDeleteRenderbuffers, GLsizei -> Ptr GLuint -> GL ()) GLES2(glDeleteShader, GLuint -> GL ()) GLES2(glDeleteTextures, GLsizei -> Ptr GLuint -> GL ()) GLES2(glDepthFunc, GLenum -> GL ()) GLES2(glDepthMask, GLboolean -> GL ()) GLES2(glDepthRangef, GLclampf -> GLclampf -> GL ()) GLES2(glDetachShader, GLuint -> GLuint -> GL ()) GLES2(glDisable, GLenum -> GL ()) GLES2(glDisableVertexAttribArray, GLuint -> GL ()) GLES2(glDrawArrays, GLenum -> GLint -> GLsizei -> GL ()) GLES2(glDrawElements, GLenum -> GLsizei -> GLenum -> Ptr () -> GL ()) GLES2(glEnable, GLenum -> GL ()) GLES2(glEnableVertexAttribArray, GLuint -> GL ()) GLES2(glFinish, GL ()) GLES2(glFlush, GL ()) GLES2(glFramebufferRenderbuffer, GLenum -> GLenum -> GLenum -> GLuint -> GL ()) GLES2(glFramebufferTexture2D, GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GL ()) GLES2(glFrontFace, GLenum -> GL ()) GLES2(glGenBuffers, GLsizei -> Ptr GLuint -> GL ()) GLES2(glGenerateMipmap, GLenum -> GL ()) GLES2(glGenFramebuffers, GLsizei -> Ptr GLuint -> GL ()) GLES2(glGenRenderbuffers, GLsizei -> Ptr GLuint -> GL ()) GLES2(glGenTextures, GLsizei -> Ptr GLuint -> GL ()) GLES2(glGetActiveAttrib, GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> CString -> GL ()) GLES2(glGetActiveUniform, GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> CString -> GL ()) GLES2(glGetAttachedShaders, GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLuint -> GL ()) GLES2(glGetAttribLocation, GLuint -> CString -> GL GLint) GLES2(glGetBooleanv, GLenum -> Ptr GLboolean -> GL ()) GLES2(glGetBufferParameteriv, GLenum -> GLenum -> Ptr GLint -> GL ()) GLES2(glGetError, GL GLenum) GLES2(glGetFloatv, GLenum -> Ptr GLfloat -> GL ()) GLES2(glGetFramebufferAttachmentParameteriv, GLenum -> GLenum -> GLenum -> Ptr GLint -> GL ()) GLES2(glGetIntegerv, GLenum -> Ptr GLint -> GL ()) GLES2(glGetProgramiv, GLuint -> GLenum -> Ptr GLint -> GL ()) GLES2(glGetProgramInfoLog, GLuint -> GLsizei -> Ptr GLsizei -> CString -> GL ()) GLES2(glGetRenderbufferParameteriv, GLenum -> GLenum -> Ptr GLint -> GL ()) GLES2(glGetShaderiv, GLuint -> GLenum -> Ptr GLint -> GL ()) GLES2(glGetShaderInfoLog, GLuint -> GLsizei -> Ptr GLsizei -> CString -> GL ()) GLES2(glGetShaderPrecisionFormat, GLenum -> GLenum -> Ptr GLint -> Ptr GLint -> GL ()) GLES2(glGetShaderSource, GLuint -> GLsizei -> Ptr GLsizei -> CString -> GL ()) GLES2(glGetString, GLenum -> GL CString) GLES2(glGetTexParameterfv, GLenum -> GLenum -> Ptr GLfloat -> GL ()) GLES2(glGetTexParameteriv, GLenum -> GLenum -> Ptr GLint -> GL ()) GLES2(glGetUniformfv, GLuint -> GLint -> Ptr GLfloat -> GL ()) GLES2(glGetUniformiv, GLuint -> GLint -> Ptr GLint -> GL ()) GLES2(glGetUniformLocation, GLuint -> CString -> GL GLint) GLES2(glGetVertexAttribfv, GLuint -> GLenum -> Ptr GLfloat -> GL ()) GLES2(glGetVertexAttribiv, GLuint -> GLenum -> Ptr GLint -> GL ()) GLES2(glGetVertexAttribPointerv, GLuint -> GLenum -> Ptr (Ptr ()) -> GL ()) GLES2(glHint, GLenum -> GLenum -> GL ()) GLES2(glIsBuffer, GLuint -> GL GLboolean) GLES2(glIsEnabled, GLenum -> GL GLboolean) GLES2(glIsFramebuffer, GLuint -> GL GLboolean) GLES2(glIsProgram, GLuint -> GL GLboolean) GLES2(glIsRenderbuffer, GLuint -> GL GLboolean) GLES2(glIsShader, GLuint -> GL GLboolean) GLES2(glIsTexture, GLuint -> GL GLboolean) GLES2(glLineWidth, GLfloat -> GL ()) GLES2(glLinkProgram, GLuint -> GL ()) GLES2(glPixelStorei, GLenum -> GLint -> GL ()) GLES2(glPolygonOffset, GLfloat -> GLfloat -> GL ()) GLES2(glReadPixels, GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> GL ()) GLES2(glReleaseShaderCompiler, GL ()) GLES2(glRenderbufferStorage, GLenum -> GLenum -> GLsizei -> GLsizei -> GL ()) GLES2(glSampleCoverage, GLclampf -> GLboolean -> GL ()) GLES2(glScissor, GLint -> GLint -> GLsizei -> GLsizei -> GL ()) GLES2(glShaderBinary, GLsizei -> Ptr GLuint -> GLenum -> Ptr () -> GLsizei -> GL ()) GLES2(glShaderSource, GLuint -> GLsizei -> Ptr CString -> Ptr GLint -> GL ()) GLES2(glStencilFunc, GLenum -> GLint -> GLuint -> GL ()) GLES2(glStencilFuncSeparate, GLenum -> GLenum -> GLint -> GLuint -> GL ()) GLES2(glStencilMask, GLuint -> GL ()) GLES2(glStencilMaskSeparate, GLenum -> GLuint -> GL ()) GLES2(glStencilOp, GLenum -> GLenum -> GLenum -> GL ()) GLES2(glStencilOpSeparate, GLenum -> GLenum -> GLenum -> GLenum -> GL ()) -- GLES2(glTexImage2D, GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> GL ()) GLES2(glTexImage2D, GLenum -> GLint -> GLenum -> GLuint -> GLuint -> GLint -> GLenum -> GLenum -> CString -> GL ()) GLES2(glTexParameterf, GLenum -> GLenum -> GLfloat -> GL ()) GLES2(glTexParameterfv, GLenum -> GLenum -> Ptr GLfloat -> GL ()) GLES2(glTexParameteri, GLenum -> GLenum -> GLint -> GL ()) GLES2(glTexParameteriv, GLenum -> GLenum -> Ptr GLint -> GL ()) GLES2(glTexSubImage2D, GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> GL ()) GLES2(glUniform1f, GLint -> GLfloat -> GL ()) GLES2(glUniform1fv, GLint -> GLsizei -> Ptr GLfloat -> GL ()) GLES2(glUniform1i, GLint -> GLint -> GL ()) GLES2(glUniform1iv, GLint -> GLsizei -> Ptr GLint -> GL ()) GLES2(glUniform2f, GLint -> GLfloat -> GLfloat -> GL ()) GLES2(glUniform2fv, GLint -> GLsizei -> Ptr GLfloat -> GL ()) GLES2(glUniform2i, GLint -> GLint -> GLint -> GL ()) GLES2(glUniform2iv, GLint -> GLsizei -> Ptr GLint -> GL ()) GLES2(glUniform3f, GLint -> GLfloat -> GLfloat -> GLfloat -> GL ()) GLES2(glUniform3fv, GLint -> GLsizei -> Ptr GLfloat -> GL ()) GLES2(glUniform3i, GLint -> GLint -> GLint -> GLint -> GL ()) GLES2(glUniform3iv, GLint -> GLsizei -> Ptr GLint -> GL ()) GLES2(glUniform4f, GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GL ()) GLES2(glUniform4fv, GLint -> GLsizei -> Ptr GLfloat -> GL ()) GLES2(glUniform4i, GLint -> GLint -> GLint -> GLint -> GLint -> GL ()) GLES2(glUniform4iv, GLint -> GLsizei -> Ptr GLint -> GL ()) GLES2(glUniformMatrix2fv, GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES2(glUniformMatrix3fv, GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES2(glUniformMatrix4fv, GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES2(glUseProgram, GLuint -> GL ()) GLES2(glValidateProgram, GLuint -> GL ()) GLES2(glVertexAttrib1f, GLuint -> GLfloat -> GL ()) GLES2(glVertexAttrib1fv, GLuint -> Ptr GLfloat -> GL ()) GLES2(glVertexAttrib2f, GLuint -> GLfloat -> GLfloat -> GL ()) GLES2(glVertexAttrib2fv, GLuint -> Ptr GLfloat -> GL ()) GLES2(glVertexAttrib3f, GLuint -> GLfloat -> GLfloat -> GLfloat -> GL ()) GLES2(glVertexAttrib3fv, GLuint -> Ptr GLfloat -> GL ()) GLES2(glVertexAttrib4f, GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GL ()) GLES2(glVertexAttrib4fv, GLuint -> Ptr GLfloat -> GL ()) GLES2(glVertexAttribPointer, GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> Ptr () -> GL ()) GLES2(glViewport, GLint -> GLint -> GLsizei -> GLsizei -> GL ()) -- ** OpenGL ES 3.0 GLES3(glReadBuffer, GLenum -> GL ()) GLES3(glDrawRangeElements, GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> GL ()) --GLES3(glTexImage3D, GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> GL ()) GLES3(glTexImage3D, GLenum -> GLint -> GLenum -> GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLenum -> CString -> GL ()) GLES3(glTexSubImage3D, GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> GL ()) GLES3(glCopyTexSubImage3D, GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GL ()) --GLES3(glCompressedTexImage3D, GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> GL ()) GLES3(glCompressedTexImage3D, GLenum -> GLint -> GLenum -> GLuint -> GLuint -> GLuint -> GLint -> GLsizei -> CString -> GL ()) GLES3(glCompressedTexSubImage3D, GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> GL ()) GLES3(glGenQueries, GLsizei -> Ptr GLuint -> GL ()) GLES3(glDeleteQueries, GLsizei -> Ptr GLuint -> GL ()) GLES3(glIsQuery, GLuint -> GL GLboolean) GLES3(glBeginQuery, GLenum -> GLuint -> GL ()) GLES3(glEndQuery, GLenum -> GL ()) GLES3(glGetQueryiv, GLenum -> GLenum -> Ptr GLint -> GL ()) GLES3(glGetQueryObjectuiv, GLuint -> GLenum -> Ptr GLuint -> GL ()) GLES3(glUnmapBuffer, GLenum -> GL GLboolean) GLES3(glGetBufferPointerv, GLenum -> GLenum -> Ptr (Ptr ()) -> GL ()) GLES3(glDrawBuffers, GLsizei -> Ptr GLenum -> GL ()) GLES3(glUniformMatrix2x3fv, GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES3(glUniformMatrix3x2fv, GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES3(glUniformMatrix2x4fv, GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES3(glUniformMatrix4x2fv, GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES3(glUniformMatrix3x4fv, GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES3(glUniformMatrix4x3fv, GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES3(glBlitFramebuffer, GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> GL ()) GLES3(glRenderbufferStorageMultisample, GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GL ()) GLES3(glFramebufferTextureLayer, GLenum -> GLenum -> GLuint -> GLint -> GLint -> GL ()) GLES3(glMapBufferRange, GLenum -> GLintptr -> GLsizeiptr -> GLbitfield -> GL (Ptr ())) GLES3(glFlushMappedBufferRange, GLenum -> GLintptr -> GLsizeiptr -> GL ()) GLES3(glBindVertexArray, GLuint -> GL ()) GLES3(glDeleteVertexArrays, GLsizei -> Ptr GLuint -> GL ()) GLES3(glGenVertexArrays, GLsizei -> Ptr GLuint -> GL ()) GLES3(glIsVertexArray, GLuint -> GL GLboolean) GLES3(glGetIntegeri_v, GLenum -> GLuint -> Ptr GLint -> GL ()) GLES3(glBeginTransformFeedback, GLenum -> GL ()) GLES3(glEndTransformFeedback, GL ()) GLES3(glBindBufferRange, GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> GL ()) GLES3(glBindBufferBase, GLenum -> GLuint -> GLuint -> GL ()) GLES3(glTransformFeedbackVaryings, GLuint -> GLsizei -> Ptr CString -> GLenum -> GL ()) GLES3(glGetTransformFeedbackVarying, GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> CString -> GL ()) GLES3(glVertexAttribIPointer, GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> GL ()) GLES3(glGetVertexAttribIiv, GLuint -> GLenum -> Ptr GLint -> GL ()) GLES3(glGetVertexAttribIuiv, GLuint -> GLenum -> Ptr GLuint -> GL ()) GLES3(glVertexAttribI4i, GLuint -> GLint -> GLint -> GLint -> GLint -> GL ()) GLES3(glVertexAttribI4ui, GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GL ()) GLES3(glVertexAttribI4iv, GLuint -> Ptr GLint -> GL ()) GLES3(glVertexAttribI4uiv, GLuint -> Ptr GLuint -> GL ()) GLES3(glGetUniformuiv, GLuint -> GLint -> Ptr GLuint -> GL ()) GLES3(glGetFragDataLocation, GLuint -> CString-> GL GLint) GLES3(glUniform1ui, GLint -> GLuint -> GL ()) GLES3(glUniform2ui, GLint -> GLuint -> GLuint -> GL ()) GLES3(glUniform3ui, GLint -> GLuint -> GLuint -> GLuint -> GL ()) GLES3(glUniform4ui, GLint -> GLuint -> GLuint -> GLuint -> GLuint -> GL ()) GLES3(glUniform1uiv, GLint -> GLsizei -> Ptr GLuint -> GL ()) GLES3(glUniform2uiv, GLint -> GLsizei -> Ptr GLuint -> GL ()) GLES3(glUniform3uiv, GLint -> GLsizei -> Ptr GLuint -> GL ()) GLES3(glUniform4uiv, GLint -> GLsizei -> Ptr GLuint -> GL ()) GLES3(glClearBufferiv, GLenum -> GLint -> Ptr GLint -> GL ()) GLES3(glClearBufferuiv, GLenum -> GLint -> Ptr GLuint -> GL ()) GLES3(glClearBufferfv, GLenum -> GLint -> Ptr GLfloat -> GL ()) GLES3(glClearBufferfi, GLenum -> GLint -> GLfloat -> GLint -> GL ()) GLES3(glGetStringi, GLenum -> GLuint -> GL CString) GLES3(glCopyBufferSubData, GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> GL ()) GLES3(glGetUniformIndices, GLuint -> GLsizei -> Ptr CString -> Ptr GLuint -> GL ()) GLES3(glGetActiveUniformsiv, GLuint -> GLsizei -> Ptr GLuint -> GLenum -> Ptr GLint -> GL ()) GLES3(glGetUniformBlockIndex, GLuint -> CString -> GL GLuint) GLES3(glGetActiveUniformBlockiv, GLuint -> GLuint -> GLenum -> Ptr GLint -> GL ()) GLES3(glGetActiveUniformBlockName, GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> CString -> GL ()) GLES3(glUniformBlockBinding, GLuint -> GLuint -> GLuint -> GL ()) GLES3(glDrawArraysInstanced, GLenum -> GLint -> GLsizei -> GLsizei -> GL ()) GLES3(glDrawElementsInstanced, GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GL ()) GLES3(glFenceSync, GLenum -> GLbitfield -> GL GLsync) GLES3(glIsSync, GLsync -> GL GLboolean) GLES3(glDeleteSync, GLsync -> GL ()) GLES3(glClientWaitSync, GLsync -> GLbitfield -> GLuint64 -> GL GLenum) GLES3(glWaitSync, GLsync -> GLbitfield -> GLuint64 -> GL ()) GLES3(glGetInteger64v, GLenum -> Ptr GLint64 -> GL ()) GLES3(glGetSynciv, GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> GL ()) GLES3(glGetInteger64i_v, GLenum -> GLuint -> Ptr GLint64 -> GL ()) GLES3(glGetBufferParameteri64v, GLenum -> GLenum -> Ptr GLint64 -> GL ()) GLES3(glGenSamplers, GLsizei -> Ptr GLuint -> GL ()) GLES3(glDeleteSamplers, GLsizei -> Ptr GLuint -> GL ()) GLES3(glIsSampler, GLuint -> GL GLboolean) GLES3(glBindSampler, GLuint -> GLuint -> GL ()) GLES3(glSamplerParameteri, GLuint -> GLenum -> GLint -> GL ()) GLES3(glSamplerParameteriv, GLuint -> GLenum -> Ptr GLint -> GL ()) GLES3(glSamplerParameterf, GLuint -> GLenum -> GLfloat -> GL ()) GLES3(glSamplerParameterfv, GLuint -> GLenum -> Ptr GLfloat -> GL ()) GLES3(glGetSamplerParameteriv, GLuint -> GLenum -> Ptr GLint -> GL ()) GLES3(glGetSamplerParameterfv, GLuint -> GLenum -> Ptr GLfloat -> GL ()) GLES3(glVertexAttribDivisor, GLuint -> GLuint -> GL ()) GLES3(glBindTransformFeedback, GLenum -> GLuint -> GL ()) GLES3(glDeleteTransformFeedbacks, GLsizei -> Ptr GLuint -> GL ()) GLES3(glGenTransformFeedbacks, GLsizei -> Ptr GLuint -> GL ()) GLES3(glIsTransformFeedback, GLuint -> GL GLboolean) GLES3(glPauseTransformFeedback, GL ()) GLES3(glResumeTransformFeedback, GL ()) GLES3(glGetProgramBinary, GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr () -> GL ()) GLES3(glProgramBinary, GLuint -> GLenum -> Ptr () -> GLsizei -> GL ()) GLES3(glProgramParameteri, GLuint -> GLenum -> GLint -> GL ()) GLES3(glInvalidateFramebuffer, GLenum -> GLsizei -> Ptr GLenum -> GL ()) GLES3(glInvalidateSubFramebuffer, GLenum -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GL ()) GLES3(glTexStorage2D, GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GL ()) GLES3(glTexStorage3D, GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GL ()) GLES3(glGetInternalformativ, GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint -> GL ()) -- ** Extensions GL_EXT(glBindVertexArrayOES, GLuint -> GL ()) GL_EXT(glDeleteVertexArraysOES, GLsizei -> Ptr GLuint -> GL ()) GL_EXT(glGenVertexArraysOES, GLsizei -> Ptr GLuint -> GL ()) GL_EXT(glIsVertexArrayOES, GLuint -> GL GLboolean) GL_EXT(glDrawTexiOES, GLint -> GLint -> GLint -> GLint -> GLint -> GL ()) GL_EXT(glMultiDrawArraysEXT, GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> GL ()) GL_EXT(glMultiDrawElementsEXT, GLenum -> Ptr GLsizei -> GLenum -> Ptr (Ptr ()) -> GLsizei -> GL ()) GL_EXT(glDrawRangeElementsEXT, GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> GL ()) -- ** OpenGL ES 3.1 GLES31(glDispatchCompute, GLuint -> GLuint -> GLuint -> GL ()) GLES31(glDispatchComputeIndirect, GLintptr -> GL ()) GLES31(glDrawArraysIndirect, GLenum -> Ptr () -> GL ()) GLES31(glDrawElementsIndirect, GLenum -> GLenum -> Ptr () -> GL ()) GLES31(glFramebufferParameteri, GLenum -> GLenum -> GLint -> GL ()) GLES31(glGetFramebufferParameteriv, GLenum -> GLenum -> Ptr GLint -> GL ()) GLES31(glGetProgramInterfaceiv, GLuint -> GLenum -> GLenum -> Ptr GLint -> GL ()) GLES31(glGetProgramResourceIndex, GLuint -> GLenum -> Ptr GLchar -> GL ()) GLES31(glGetProgramResourceName, GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> GL ()) GLES31(glGetProgramResourceiv, GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> GL ()) GLES31(glGetProgramResourceLocation, GLuint -> GLenum -> Ptr GLchar -> GL ()) GLES31(glUseProgramStages, GLuint -> GLbitfield -> GLuint -> GL ()) GLES31(glActiveShaderProgram, GLuint -> GLuint -> GL ()) GLES31(glCreateShaderProgramv, GLenum -> GLsizei -> Ptr CString -> GL ()) GLES31(glBindProgramPipeline, GLuint -> GL ()) GLES31(glDeleteProgramPipelines, GLsizei -> Ptr GLuint -> GL ()) GLES31(glGenProgramPipelines, GLsizei -> Ptr GLuint -> GL ()) GLES31(glIsProgramPipeline, GLuint -> GL ()) GLES31(glGetProgramPipelineiv, GLuint -> GLenum -> Ptr GLint -> GL ()) GLES31(glProgramUniform1i, GLuint -> GLint -> GLint -> GL ()) GLES31(glProgramUniform2i, GLuint -> GLint -> GLint -> GLint -> GL ()) GLES31(glProgramUniform3i, GLuint -> GLint -> GLint -> GLint -> GLint -> GL ()) GLES31(glProgramUniform4i, GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GL ()) GLES31(glProgramUniform1ui, GLuint -> GLint -> GLuint -> GL ()) GLES31(glProgramUniform2ui, GLuint -> GLint -> GLuint -> GLuint -> GL ()) GLES31(glProgramUniform3ui, GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GL ()) GLES31(glProgramUniform4ui, GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> GL ()) GLES31(glProgramUniform1f, GLuint -> GLint -> GLfloat -> GL ()) GLES31(glProgramUniform2f, GLuint -> GLint -> GLfloat -> GLfloat -> GL ()) GLES31(glProgramUniform3f, GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GL ()) GLES31(glProgramUniform4f, GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GL ()) GLES31(glProgramUniform1iv, GLuint -> GLint -> GLsizei -> Ptr GLint -> GL ()) GLES31(glProgramUniform2iv, GLuint -> GLint -> GLsizei -> Ptr GLint -> GL ()) GLES31(glProgramUniform3iv, GLuint -> GLint -> GLsizei -> Ptr GLint -> GL ()) GLES31(glProgramUniform4iv, GLuint -> GLint -> GLsizei -> Ptr GLint -> GL ()) GLES31(glProgramUniform1uiv, GLuint -> GLint -> GLsizei -> Ptr GLuint -> GL ()) GLES31(glProgramUniform2uiv, GLuint -> GLint -> GLsizei -> Ptr GLuint -> GL ()) GLES31(glProgramUniform3uiv, GLuint -> GLint -> GLsizei -> Ptr GLuint -> GL ()) GLES31(glProgramUniform4uiv, GLuint -> GLint -> GLsizei -> Ptr GLuint -> GL ()) GLES31(glProgramUniform1fv, GLuint -> GLint -> GLsizei -> Ptr GLfloat -> GL ()) GLES31(glProgramUniform2fv, GLuint -> GLint -> GLsizei -> Ptr GLfloat -> GL ()) GLES31(glProgramUniform3fv, GLuint -> GLint -> GLsizei -> Ptr GLfloat -> GL ()) GLES31(glProgramUniform4fv, GLuint -> GLint -> GLsizei -> Ptr GLfloat -> GL ()) GLES31(glProgramUniformMatrix2fv, GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES31(glProgramUniformMatrix3fv, GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES31(glProgramUniformMatrix4fv, GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES31(glProgramUniformMatrix2x3fv, GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES31(glProgramUniformMatrix3x2fv, GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES31(glProgramUniformMatrix2x4fv, GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES31(glProgramUniformMatrix4x2fv, GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES31(glProgramUniformMatrix3x4fv, GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES31(glProgramUniformMatrix4x3fv, GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> GL ()) GLES31(glValidateProgramPipeline, GLuint -> GL ()) GLES31(glGetProgramPipelineInfoLog, GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> GL ()) GLES31(glBindImageTexture, GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLenum -> GL ()) GLES31(glGetBooleani_v, GLenum -> GLuint -> Ptr GLboolean -> GL ()) GLES31(glMemoryBarrier, GLbitfield -> GL ()) GLES31(glMemoryBarrierByRegion, GLbitfield -> GL ()) GLES31(glTexStorage2DMultisample, GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> GL ()) GLES31(glGetMultisamplefv, GLenum -> GLuint -> Ptr GLfloat -> GL ()) GLES31(glSampleMaski, GLuint -> GLbitfield -> GL ()) GLES31(glGetTexLevelParameteriv, GLenum -> GLint -> GLenum -> Ptr GLint -> GL ()) GLES31(glGetTexLevelParameterfv, GLenum -> GLint -> GLenum -> Ptr GLfloat -> GL ()) GLES31(glBindVertexBuffer, GLuint -> GLuint -> GLintptr -> GLsizei -> GL ()) GLES31(glVertexAttribFormat, GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> GL ()) GLES31(glVertexAttribIFormat, GLuint -> GLint -> GLenum -> GLuint -> GL ()) GLES31(glVertexAttribBinding, GLuint -> GLuint -> GL ()) GLES31(glVertexBindingDivisor, GLuint -> GLuint -> GL ())