lib/glesv2: add some doc to `GLError`
[nit.git] / lib / glesv2 / glesv2.nit
index 670c903..54a9fcd 100644 (file)
@@ -328,8 +328,13 @@ end
 # An OpenGL ES 2.0 error code
 extern class GLError
        super GLEnum
+
+       # Is there no error?
        fun is_ok: Bool do return is_no_error
+
+       # Is this not an error?
        fun is_no_error: Bool `{ return recv == GL_NO_ERROR; `}
+
        fun is_invalid_enum: Bool `{ return recv == GL_INVALID_ENUM; `}
        fun is_invalid_value: Bool `{ return recv == GL_INVALID_VALUE; `}
        fun is_invalid_operation: Bool `{ return recv == GL_INVALID_OPERATION; `}
@@ -357,6 +362,51 @@ do
        end
 end
 
+# Texture minifying function
+#
+# Used by: `GLES::tex_parameter_min_filter`
+extern class GLTextureMinFilter
+       super GLEnum
+
+       new nearest `{ return GL_NEAREST; `}
+       new linear `{ return GL_LINEAR; `}
+end
+
+# Texture magnification function
+#
+# Used by: `GLES::tex_parameter_mag_filter`
+extern class GLTextureMagFilter
+       super GLEnum
+
+       new nearest `{ return GL_NEAREST; `}
+       new linear `{ return GL_LINEAR; `}
+       new nearest_mipmap_nearest `{ return GL_NEAREST_MIPMAP_NEAREST; `}
+       new linear_mipmap_nearest `{ return GL_LINEAR_MIPMAP_NEAREST; `}
+       new nearest_mipmap_linear `{ return GL_NEAREST_MIPMAP_LINEAR; `}
+       new linear_mipmap_linear `{ return GL_LINEAR_MIPMAP_LINEAR; `}
+end
+
+# Wrap parameter of a texture
+#
+# Used by: `tex_parameter_wrap_*`
+extern class GLTextureWrap
+       super GLEnum
+
+       new clamp_to_edge `{ return GL_CLAMP_TO_EDGE; `}
+       new mirrored_repeat `{ return GL_MIRRORED_REPEAT; `}
+       new repeat `{ return GL_REPEAT; `}
+end
+
+# Target texture
+#
+# Used by: `tex_parameter_*`
+extern class GLTextureTarget
+       super GLEnum
+
+       new flat `{ return GL_TEXTURE_2D; `}
+       new cube_map `{ return GL_TEXTURE_CUBE_MAP; `}
+end
+
 redef class Sys
        private var gles = new GLES is lazy
 end
@@ -375,6 +425,27 @@ class GLES
        # Set the viewport
        fun viewport(x, y, width, height: Int) `{ glViewport(x, y, width, height); `}
 
+       # Define front- and back-facing polygons
+       #
+       # Front-facing polygons are clockwise if `value`, counter-clockwise otherwise.
+       fun front_face=(value: Bool) `{ glFrontFace(value? GL_CW: GL_CCW); `}
+
+       # Specify whether front- or back-facing polygons can be culled, default is `back` only
+       #
+       # One or both of `front` or `back` must be `true`. If you want to deactivate culling
+       # use `(new GLCap.cull_face).disable`.
+       #
+       # Require: `front or back`
+       fun cull_face(front, back: Bool)
+       do
+               assert not (front or back)
+               cull_face_native(front, back)
+       end
+
+       private fun cull_face_native(front, back: Bool) `{
+               glCullFace(front? back? GL_FRONT_AND_BACK: GL_BACK: GL_FRONT);
+       `}
+
        # Clear the `buffer`
        fun clear(buffer: GLBuffer) `{ glClear(buffer); `}
 
@@ -406,6 +477,34 @@ class GLES
        #
        # Should always return `true` in OpenGL ES 2.0 and 3.0.
        fun shader_compiler: Bool do return get_bool(0x8DFA)
+
+       # Set the texture minifying function
+       #
+       # Foreign: glTexParameter with GL_TEXTURE_MIN_FILTER
+       fun tex_parameter_min_filter(target: GLTextureTarget, value: GLTextureMinFilter) `{
+               glTexParameteri(target, GL_TEXTURE_MIN_FILTER, value);
+       `}
+
+       # Set the texture magnification function
+       #
+       # Foreign: glTexParameter with GL_TEXTURE_MAG_FILTER
+       fun tex_parameter_mag_filter(target: GLTextureTarget, value: GLTextureMagFilter) `{
+               glTexParameteri(target, GL_TEXTURE_MAG_FILTER, value);
+       `}
+
+       # Set the texture wrap parameter for coordinates _s_
+       #
+       # Foreign: glTexParameter with GL_TEXTURE_WRAP_S
+       fun tex_parameter_wrap_s(target: GLTextureTarget, value: GLTextureWrap) `{
+               glTexParameteri(target, GL_TEXTURE_WRAP_S, value);
+       `}
+
+       # Set the texture wrap parameter for coordinates _t_
+       #
+       # Foreign: glTexParameter with GL_TEXTURE_WRAP_T
+       fun tex_parameter_wrap_t(target: GLTextureTarget, value: GLTextureWrap) `{
+               glTexParameteri(target, GL_TEXTURE_WRAP_T, value);
+       `}
 end
 
 # Float related data types of OpenGL ES 2.0 shaders