WebGLRenderingContext.detachShader()
WebGL API 的WebGLRenderingContext.detachShader() 方法:从一个 WebGLProgram中分离一个先前附加的片段或者顶点着色器(WebGLShader ).
Syntax
void gl.detachShader(program, shader);
Parameters
program-
一个
WebGLProgram对象。 shader-
一个顶点或者片元着色器
WebGLShader.
Specifications
| Specification |
|---|
| WebGL Specification # 5.14.9 |
例子
使用 detachShader 方法分离一个顶点或片元着色器
//顶点着色器
var vertexShader = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vertexShader, vertexSrc);
gl.compileShader(vertexShader);
//片元着色器
var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);//创建 WebGLShader。
gl.shaderSource(fragmentShader, fragmentSrc); //fragmentSrc 设置一个 WebGLShader 的源码。
gl.compileShader(fragmentShader);
//WebGLProgram
var program = gl.createProgram();//创建 WebGLProgram
gl.attachShader(program, vertexShader); //往 WebGLProgram 添加一个片段或者顶点着色器。
gl.attachShader(program, fragmentShader);
gl.linkProgram(program);//链接给入的 WebGLProgram 对象
gl.detachShader(program, vertexShader); //从一个 WebGLProgram 中分离一个先前附加的片段或者顶点着色器;
gl.detachShader(program, fragmentShader);
gl.deleteShader(vertexShader);
gl.deleteShader(fragmentShader);
Browser compatibility
BCD tables only load in the browser
See also
WebGLProgramWebGLShaderWebGLRenderingContext.attachShader()WebGLRenderingContext.compileShader()WebGLRenderingContext.createProgram()WebGLRenderingContext.createShader()WebGLRenderingContext.deleteProgram()WebGLRenderingContext.deleteShader()WebGLRenderingContext.detachShader()WebGLRenderingContext.getAttachedShaders()(en-US)WebGLRenderingContext.getProgramParameter()WebGLRenderingContext.getProgramInfoLog()WebGLRenderingContext.getShaderParameter()WebGLRenderingContext.getShaderPrecisionFormat()(en-US)WebGLRenderingContext.getShaderInfoLog()(en-US)WebGLRenderingContext.getShaderSource()WebGLRenderingContext.isProgram()WebGLRenderingContext.isShader()WebGLRenderingContext.linkProgram()WebGLRenderingContext.shaderSource()WebGLRenderingContext.useProgram()WebGLRenderingContext.validateProgram()