public void AttachShader(Shader Shader) { switch (Shader.ShaderType) { case GLES.Shader.Type.Fragment: this.FragmentShader = Shader; break; case GLES.Shader.Type.Vertex: this.VertexShader = Shader; break; } GL.glAttachShader(this.Index, Shader.Index); }
static public ShaderProgram CreateProgram(string VertexProgram, string FragmentProgram) { var vertexShader = new Shader(Shader.Type.Vertex, VertexProgram); var fragmentShader = new Shader(Shader.Type.Fragment, FragmentProgram); var programObject = new ShaderProgram(); programObject.AttachShader(vertexShader); programObject.AttachShader(fragmentShader); return programObject; }
public void Dispose() { // TODO: It seems that this object is created in one thread but disposed in other one #if false if (this.Index != 0) { if (this.VertexShader != null) this.VertexShader.Dispose(); if (this.FragmentShader != null) this.FragmentShader.Dispose(); GL.glDeleteProgram(this.Index); this.Index = 0; this.VertexShader = null; this.FragmentShader = null; } #endif }