WebGLShader对象是webgl中的着色器,它分为顶点着色器(vertex shader)和片元着色器(fragmentshader)。
创建shader的过程,
1.使用gl.createShader(type)创建一个type类型的shader (type的值为:gl.VERTEX_SHADER 和gl.FRAGMENT_SHADER)
2.通过gl.shaderSource(shader,sourceCode)挂载GLSL源代码。
3.最后使用gl.compileShader(shader)进行着色器的编译
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 vertexShaderSource = "attribute vec4 position;\n"+ "void main() {\n"+ " gl_Position = position;\n"+ "}\n";
var vertexShader = createShader(gl, vertexShaderSource, gl.VERTEX_SHADER)
网友评论