X-Git-Url: http://nitlanguage.org diff --git a/lib/glesv2/glesv2.nit b/lib/glesv2/glesv2.nit index 06803ae..de2babc 100644 --- a/lib/glesv2/glesv2.nit +++ b/lib/glesv2/glesv2.nit @@ -33,8 +33,10 @@ module glesv2 is pkgconfig new_annotation glsl_vertex_shader new_annotation glsl_fragment_shader + ldflags("-lGLESv2")@android end +import android::aware in "C Header" `{ #include @@ -582,53 +584,155 @@ class GLES var capabilities = new GLCapabilities is lazy end +# Bind `framebuffer` to a framebuffer target +# +# In OpenGL ES 2.0, `target` must be `gl_FRAMEBUFFER`. +fun glBindFramebuffer(target: GLFramebufferTarget, framebuffer: Int) `{ + glBindFramebuffer(target, framebuffer); +`} + +# Target of `glBindFramebuffer` +extern class GLFramebufferTarget + super GLEnum +end + +# Target both reading and writing on the framebuffer with `glBindFramebuffer` +fun gl_FRAMEBUFFER: GLFramebufferTarget `{ return GL_FRAMEBUFFER; `} + +# Bind `renderbuffer` to a renderbuffer target +# +# In OpenGL ES 2.0, `target` must be `gl_RENDERBUFFER`. +fun glBindRenderbuffer(target: GLRenderbufferTarget, renderbuffer: Int) `{ + glBindRenderbuffer(target, renderbuffer); +`} + +# Target of `glBindRenderbuffer` +extern class GLRenderbufferTarget + super GLEnum +end + +# Target a renderbuffer with `glBindRenderbuffer` +fun gl_RENDERBUFFER: GLRenderbufferTarget `{ return GL_RENDERBUFFER; `} + +# Specify implementation specific hints +fun glHint(target: GLHintTarget, mode: GLHintMode) `{ + glHint(target, mode); +`} + +# Completeness status of a framebuffer object +fun glCheckFramebufferStatus(target: GLFramebufferTarget): GLFramebufferStatus `{ + return glCheckFramebufferStatus(target); +`} + +# Return value of `glCheckFramebufferStatus` +extern class GLFramebufferStatus + super GLEnum + + redef fun to_s + do + if self == gl_FRAMEBUFFER_COMPLETE then return "complete" + if self == gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT then return "incomplete attachment" + if self == gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS then return "incomplete dimension" + if self == gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT then return "incomplete missing attachment" + if self == gl_FRAMEBUFFER_UNSUPPORTED then return "unsupported" + return "unknown" + end +end + +# The framebuffer is complete +fun gl_FRAMEBUFFER_COMPLETE: GLFramebufferStatus `{ + return GL_FRAMEBUFFER_COMPLETE; +`} + +# Not all framebuffer attachment points are framebuffer attachment complete +fun gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLFramebufferStatus `{ + return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; +`} + +# Not all attached images have the same width and height +fun gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLFramebufferStatus `{ + return GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS; +`} + +# No images are attached to the framebuffer +fun gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLFramebufferStatus `{ + return GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT; +`} + +# The combination of internal formats of the attached images violates an implementation-dependent set of restrictions +fun gl_FRAMEBUFFER_UNSUPPORTED: GLFramebufferStatus `{ + return GL_FRAMEBUFFER_UNSUPPORTED; +`} + +# Hint target for `glHint` +extern class GLHintTarget + super GLEnum +end + +# Indicates the quality of filtering when generating mipmap images +fun gl_GENERATE_MIPMAP_HINT: GLHintTarget `{ return GL_GENERATE_MIPMAP_HINT; `} + +# Hint mode for `glHint` +extern class GLHintMode + super GLEnum +end + +# The most efficient option should be chosen +fun gl_FASTEST: GLHintMode `{ return GL_FASTEST; `} + +# The most correct, or highest quality, option should be chosen +fun gl_NICEST: GLHintMode `{ return GL_NICEST; `} + +# No preference +fun gl_DONT_CARE: GLHintMode `{ return GL_DONT_CARE; `} + # Entry point to OpenGL server-side capabilities class GLCapabilities # GL capability: blend the computed fragment color values # # Foreign: GL_BLEND - fun blend: GLCap is lazy do return new GLCap(0x0BE2) + var blend: GLCap is lazy do return new GLCap(0x0BE2) # GL capability: cull polygons based of their winding in window coordinates # # Foreign: GL_CULL_FACE - fun cull_face: GLCap is lazy do return new GLCap(0x0B44) + var cull_face: GLCap is lazy do return new GLCap(0x0B44) # GL capability: do depth comparisons and update the depth buffer # # Foreign: GL_DEPTH_TEST - fun depth_test: GLCap is lazy do return new GLCap(0x0B71) + var depth_test: GLCap is lazy do return new GLCap(0x0B71) # GL capability: dither color components or indices before they are written to the color buffer # # Foreign: GL_DITHER - fun dither: GLCap is lazy do return new GLCap(0x0BE2) + var dither: GLCap is lazy do return new GLCap(0x0BE2) # GL capability: add an offset to depth values of a polygon fragment before depth test # # Foreign: GL_POLYGON_OFFSET_FILL - fun polygon_offset_fill: GLCap is lazy do return new GLCap(0x8037) + var polygon_offset_fill: GLCap is lazy do return new GLCap(0x8037) # GL capability: compute a temporary coverage value where each bit is determined by the alpha value at the corresponding location # # Foreign: GL_SAMPLE_ALPHA_TO_COVERAGE - fun sample_alpha_to_coverage: GLCap is lazy do return new GLCap(0x809E) + var sample_alpha_to_coverage: GLCap is lazy do return new GLCap(0x809E) # GL capability: AND the fragment coverage with the temporary coverage value # # Foreign: GL_SAMPLE_COVERAGE - fun sample_coverage: GLCap is lazy do return new GLCap(0x80A0) + var sample_coverage: GLCap is lazy do return new GLCap(0x80A0) # GL capability: discard fragments that are outside the scissor rectangle # # Foreign: GL_SCISSOR_TEST - fun scissor_test: GLCap is lazy do return new GLCap(0x0C11) + var scissor_test: GLCap is lazy do return new GLCap(0x0C11) # GL capability: do stencil testing and update the stencil buffer # # Foreign: GL_STENCIL_TEST - fun stencil_test: GLCap is lazy do return new GLCap(0x0B90) + var stencil_test: GLCap is lazy do return new GLCap(0x0B90) end # Float related data types of OpenGL ES 2.0 shaders