WebGLShader 可以是一个顶点着色器(vertex shader)或片元着色器(fragment shader)。每个 WebGLProgram 都需要这两种类型的着色器。
要创建一个 WebGLShader 需要三步:
-
使用 WebGLRenderingContext.createShader,
-
通过 WebGLRenderingContext.shaderSource() 然后挂接GLSL源代码 (
OpenGL Shading Language,OpenGL着色语言)
-
最后调用 WebGLRenderingContext.compileShader() 完成着色器(shader)的编译。
此时 WebGLShader 仍不是可用的形式,他需要被添加到一个 WebGLProgram里.
function createShader (gl, sourceCode, type) {
// Compiles either a shader of type gl.VERTEX_SHADER or gl.FRAGMENT_SHADER
var shader = gl.createShader( type );
gl.shaderSource( shader, sourceCode );
gl.compileShader( shader );
if ( !gl.getShaderParameter(shader, gl.COMPILE_STATUS) ) {
var info = gl.getShaderInfoLog( shader );
throw "Could not compile WebGL program. \n\n" + info;
}
return shader;
}
创建一个顶点着色器
var fragmentShaderSource =
"void main() {\n"+
" gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n"+
"}\n";
//从上面例子使用 createShader 函数。
var fragmentShader = createShader(gl, fragmentShaderSource, gl.FRAGMENT_SHADER)