# 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; `}
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
# Set the viewport
fun viewport(x, y, width, height: Int) `{ glViewport(x, y, width, height); `}
+ # Specify mapping of depth values from normalized device coordinates to window coordinates
+ #
+ # Default at `gl_depth_range(0.0, 1.0)`
+ fun depth_range(near, far: Float) `{ glDepthRangef(near, far); `}
+
+ # 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); `}
#
# Should always return `true` in OpenGL ES 2.0 and 3.0.
fun shader_compiler: Bool do return get_bool(0x8DFA)
+
+ # Enable or disable writing into the depth buffer
+ fun depth_mask(value: Bool) `{ glDepthMask(value); `}
+
+ # Set the scale and units used to calculate depth values
+ fun polygon_offset(factor, units: Float) `{ glPolygonOffset(factor, units); `}
+
+ # Specify the width of rasterized lines
+ fun line_width(width: Float) `{ glLineWidth(width); `}
+
+ # 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