private static GLShader GetShader(WebGLContext gl, string id) { var shaderScript = Element.GetById(id); var str = shaderScript.TextContent; if (str == "" || str == null) { var k = shaderScript.FirstChild; while (k != null) { if (k.NodeType == 3) str += k.TextContent; k = k.NextSibling; } } GLShader shader; if (shaderScript.GetAttributeValue("type") == "x-shader/x-fragment") { shader = gl.CreateShader(gl.FragmentShader); } else if (shaderScript.GetAttributeValue("type") == "x-shader/x-vertex") { shader = gl.CreateShader(gl.VertexShader); } else { return null; } gl.ShaderSource(shader, str); gl.CompileShader(shader); if (!gl.GetShaderParameter(shader, gl.CompileStatus)) { throw new Exception("Shader compilation failed"); } return shader; }
private static void initGL(Canvas canvas) { gl = canvas.GetWebGLContext(); viewportWidth = canvas.Width = 500; viewportHeight = canvas.Height = 500; }
public static WebGLContext GetWebGLContext(this Canvas canvas) { return(WebGLContext.GetContext(canvas)); }