The GLES API provides an interface with accompanying type declarations and defines that together provide a single consistent method of GLES usage across platforms.
This API is designed to abstract the differences between GLES implementations and versions on different systems, and to remove the requirement for any other code to directly pull in and use these system libraries. GLES Version
This API has the ability to support GLES 3.0, however platforms are not required to support anything beyond GLES 2.0. The caller is responsible for ensuring that the functions from GLES 3.0 they are calling from the interface are valid.
Previously defined in https://www.khronos.org/registry/OpenGL/api/GLES2/gl2.h
Previously defined in https://www.khronos.org/registry/OpenGL/api/GLES3/gl3.h .
The following type definitions were adapted from the types declared in https://www.khronos.org/registry/OpenGL/api/GLES2/gl2.h .
typedef uint8_t SbGlBoolean
Some compilers will transform the intptr_t to an int transparently behind the scenes, which is not equivalent to a long int, or long long int, as far as the compiler is concerned. We check the Starboard configuration and set the types to those exact types used by OpenGL ES 2.0 ( https://www.khronos.org/registry/OpenGL/api/GLES2/gl2ext.h ).
typedef long int SbGlIntPtr
void(* glActiveTexture
The following prototypes were adapted from the prototypes declared in https://www.khronos.org/registry/OpenGL/api/GLES2/gl2.h .
void(* glAttachShader
void(* glBindAttribLocation
void(* glBindBuffer
void(* glBindFramebuffer
void(* glBindRenderbuffer
void(* glBindTexture
void(* glBlendColor
void(* glBlendEquation
void(* glBlendEquationSeparate
void(* glBlendFunc
void(* glBlendFuncSeparate
void(* glBufferData
void(* glBufferSubData
SbGlEnum(* glCheckFramebufferStatus
void(* glClear
void(* glClearColor
void(* glClearDepthf
void(* glClearStencil
void(* glColorMask
void(* glCompileShader
void(* glCompressedTexImage2D
void(* glCompressedTexSubImage2D
void(* glCopyTexImage2D
void(* glCopyTexSubImage2D
SbGlUInt32(* glCreateProgram
SbGlUInt32(* glCreateShader
void(* glCullFace
void(* glDeleteBuffers
void(* glDeleteFramebuffers
void(* glDeleteProgram
void(* glDeleteRenderbuffers
void(* glDeleteShader
void(* glDeleteTextures
void(* glDepthFunc
void(* glDepthMask
void(* glDepthRangef
void(* glDetachShader
void(* glDisable
void(* glDisableVertexAttribArray
void(* glDrawArrays
void(* glDrawElements
void(* glEnable
void(* glEnableVertexAttribArray
void(* glFinish
void(* glFlush
void(* glFramebufferRenderbuffer
void(* glFramebufferTexture2D
void(* glFrontFace
void(* glGenBuffers
void(* glGenerateMipmap
void(* glGenFramebuffers
void(* glGenRenderbuffers
void(* glGenTextures
void(* glGetActiveAttrib
void(* glGetActiveUniform
void(* glGetAttachedShaders
SbGlInt32(* glGetAttribLocation
void(* glGetBooleanv
void(* glGetBufferParameteriv
SbGlEnum(* glGetError
void(* glGetFloatv
void(* glGetFramebufferAttachmentParameteriv
void(* glGetIntegerv
void(* glGetProgramiv
void(* glGetProgramInfoLog
void(* glGetRenderbufferParameteriv
void(* glGetShaderiv
void(* glGetShaderInfoLog
void(* glGetShaderPrecisionFormat
void(* glGetShaderSource
const SbGlUInt8 *(* glGetString
void(* glGetTexParameterfv
void(* glGetTexParameteriv
void(* glGetUniformfv
void(* glGetUniformiv
SbGlInt32(* glGetUniformLocation
void(* glGetVertexAttribfv
void(* glGetVertexAttribiv
void(* glGetVertexAttribPointerv
void(* glHint
SbGlBoolean(* glIsBuffer
SbGlBoolean(* glIsEnabled
SbGlBoolean(* glIsFramebuffer
SbGlBoolean(* glIsProgram
SbGlBoolean(* glIsRenderbuffer
SbGlBoolean(* glIsShader
SbGlBoolean(* glIsTexture
void(* glLineWidth
void(* glLinkProgram
void(* glPixelStorei
void(* glPolygonOffset
void(* glReadPixels
void(* glReleaseShaderCompiler
void(* glRenderbufferStorage
void(* glSampleCoverage
void(* glScissor
void(* glShaderBinary
void(* glShaderSource
void(* glStencilFunc
void(* glStencilFuncSeparate
void(* glStencilMask
void(* glStencilMaskSeparate
void(* glStencilOp
void(* glStencilOpSeparate
void(* glTexImage2D
void(* glTexParameterf
void(* glTexParameterfv
void(* glTexParameteri
void(* glTexParameteriv
void(* glTexSubImage2D
void(* glUniform1f
void(* glUniform1fv
void(* glUniform1i
void(* glUniform1iv
void(* glUniform2f
void(* glUniform2fv
void(* glUniform2i
void(* glUniform2iv
void(* glUniform3f
void(* glUniform3fv
void(* glUniform3i
void(* glUniform3iv
void(* glUniform4f
void(* glUniform4fv
void(* glUniform4i
void(* glUniform4iv
void(* glUniformMatrix2fv
void(* glUniformMatrix3fv
void(* glUniformMatrix4fv
void(* glUseProgram
void(* glValidateProgram
void(* glVertexAttrib1f
void(* glVertexAttrib1fv
void(* glVertexAttrib2f
void(* glVertexAttrib2fv
void(* glVertexAttrib3f
void(* glVertexAttrib3fv
void(* glVertexAttrib4f
void(* glVertexAttrib4fv
void(* glVertexAttribPointer
void(* glViewport
void(* glReadBuffer
The following prototypes were adapted from the prototypes declared in https://www.khronos.org/registry/OpenGL/api/GLES3/gl3.h .
void(* glDrawRangeElements
void(* glTexImage3D
void(* glTexSubImage3D
void(* glCopyTexSubImage3D
void(* glCompressedTexImage3D
void(* glCompressedTexSubImage3D
void(* glGenQueries
void(* glDeleteQueries
SbGlBoolean(* glIsQuery
void(* glBeginQuery
void(* glEndQuery
void(* glGetQueryiv
void(* glGetQueryObjectuiv
SbGlBoolean(* glUnmapBuffer
void(* glGetBufferPointerv
void(* glDrawBuffers
void(* glUniformMatrix2x3fv
void(* glUniformMatrix3x2fv
void(* glUniformMatrix2x4fv
void(* glUniformMatrix4x2fv
void(* glUniformMatrix3x4fv
void(* glUniformMatrix4x3fv
void(* glBlitFramebuffer
void(* glRenderbufferStorageMultisample
void(* glFramebufferTextureLayer
void *(* glMapBufferRange
void(* glFlushMappedBufferRange
void(* glBindVertexArray
void(* glDeleteVertexArrays
void(* glGenVertexArrays
SbGlBoolean(* glIsVertexArray
void(* glGetIntegeri_v
void(* glBeginTransformFeedback
void(* glEndTransformFeedback
void(* glBindBufferRange
void(* glBindBufferBase
void(* glTransformFeedbackVaryings
void(* glGetTransformFeedbackVarying
void(* glVertexAttribIPointer
void(* glGetVertexAttribIiv
void(* glGetVertexAttribIuiv
void(* glVertexAttribI4i
void(* glVertexAttribI4ui
void(* glVertexAttribI4iv
void(* glVertexAttribI4uiv
void(* glGetUniformuiv
SbGlInt32(* glGetFragDataLocation
void(* glUniform1ui
void(* glUniform2ui
void(* glUniform3ui
void(* glUniform4ui
void(* glUniform1uiv
void(* glUniform2uiv
void(* glUniform3uiv
void(* glUniform4uiv
void(* glClearBufferiv
void(* glClearBufferuiv
void(* glClearBufferfv
void(* glClearBufferfi
const SbGlUInt8 *(* glGetStringi
void(* glCopyBufferSubData
void(* glGetUniformIndices
void(* glGetActiveUniformsiv
SbGlUInt32(* glGetUniformBlockIndex
void(* glGetActiveUniformBlockiv
void(* glGetActiveUniformBlockName
void(* glUniformBlockBinding
void(* glDrawArraysInstanced
void(* glDrawElementsInstanced
SbGlSync(* glFenceSync
SbGlBoolean(* glIsSync
void(* glDeleteSync
SbGlEnum(* glClientWaitSync
void(* glWaitSync
void(* glGetInteger64v
void(* glGetSynciv
void(* glGetInteger64i_v
void(* glGetBufferParameteri64v
void(* glGenSamplers
void(* glDeleteSamplers
SbGlBoolean(* glIsSampler
void(* glBindSampler
void(* glSamplerParameteri
void(* glSamplerParameteriv
void(* glSamplerParameterf
void(* glSamplerParameterfv
void(* glGetSamplerParameteriv
void(* glGetSamplerParameterfv
void(* glVertexAttribDivisor
void(* glBindTransformFeedback
void(* glDeleteTransformFeedbacks
void(* glGenTransformFeedbacks
SbGlBoolean(* glIsTransformFeedback
void(* glPauseTransformFeedback
void(* glResumeTransformFeedback
void(* glGetProgramBinary
void(* glProgramBinary
void(* glProgramParameteri
void(* glInvalidateFramebuffer
void(* glInvalidateSubFramebuffer
void(* glTexStorage2D
void(* glTexStorage3D
void(* glGetInternalformativ