lib/glesv2: move shaders services to the new API style
authorAlexis Laferrière <alexis.laf@xymus.net>
Thu, 17 Sep 2015 18:38:33 +0000 (14:38 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Mon, 28 Sep 2015 00:28:20 +0000 (20:28 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/glesv2/glesv2.nit

index 8eee2f4..3968cbe 100644 (file)
@@ -212,10 +212,6 @@ end
 
 # Abstract OpenGL ES shader object, implemented by `GLFragmentShader` and `GLVertexShader`
 extern class GLShader `{GLuint`}
-       # Set the source of the shader
-       fun source=(code: NativeString) `{
-               glShaderSource(self, 1, (GLchar const **)&code, NULL);
-       `}
 
        # Source of the shader, if available
        #
@@ -241,23 +237,12 @@ extern class GLShader `{GLuint`}
                return val;
        `}
 
-       # Try to compile `source` into a binary GPU program
-       #
-       # Check the result using `is_compiled` and `info_log`
-       fun compile `{ glCompileShader(self); `}
-
        # Has this shader been compiled?
        fun is_compiled: Bool do return query(0x8B81) != 0
 
-       # Delete this shader
-       fun delete `{ glDeleteShader(self); `}
-
        # Has this shader been deleted?
        fun is_deleted: Bool do return query(0x8B80) != 0
 
-       # Is this a valid shader?
-       fun is_ok: Bool `{ return glIsShader(self); `}
-
        # Retrieve the information log of this shader
        #
        # Useful with `link` and `validate`
@@ -270,6 +255,33 @@ extern class GLShader `{GLuint`}
        `}
 end
 
+# Shader type
+extern class GLShaderType
+       super GLEnum
+end
+
+fun gl_VERTEX_SHADER: GLShaderType `{ return GL_VERTEX_SHADER; `}
+fun gl_FRAGMENT_SHADER: GLShaderType `{ return GL_FRAGMENT_SHADER; `}
+
+# Create a shader object of the `shader_type`
+fun glCreateShader(shader_type: GLShaderType): GLShader `{
+       return glCreateShader(shader_type);
+`}
+
+# Replace the source code in the `shader` object with `code`
+fun glShaderSource(shader: GLShader, code: NativeString) `{
+       glShaderSource(shader, 1, (GLchar const **)&code, NULL);
+`}
+
+# Compile the `shader` object
+fun glCompileShader(shader: GLShader) `{ glCompileShader(shader); `}
+
+# Delete the `shader` object
+fun glDeleteShader(shader: GLShader) `{ glDeleteShader(shader); `}
+
+# Determine if `name` corresponds to a shader object
+fun glIsShader(name: GLShader): Bool `{ return glIsShader(name); `}
+
 # An OpenGL ES 2.0 fragment shader
 extern class GLFragmentShader
        super GLShader