--- title: WebGLRenderingContext.attachShader() slug: Web/API/WebGLRenderingContext/attachShader translation_of: Web/API/WebGLRenderingContext/attachShader --- <div>{{APIRef("WebGL")}}</div> <p><a href="/en-US/docs/Web/API/WebGL_API">WebGL API</a> 的 <strong>WebGLRenderingContext.attachShader()</strong> 方法负责往 {{domxref("WebGLProgram")}} 添加一个片段或者顶点着色器。</p> <h2 id="语法">语法</h2> <pre class="syntaxbox">void <var><em>gl</em>.attach</var>Shader<var>(program, shader);</var> </pre> <h3 id="参数">参数</h3> <dl> <dt><code>program</code></dt> <dd>一个 {{domxref("WebGLProgram")}} 对象</dd> <dt><code>shader</code></dt> <dd>一个类型为片段或者顶点的 {{domxref("WebGLShader")}}</dd> </dl> <h2 id="示例">示例</h2> <p>以下代码为 {{domxref("WebGLProgram")}} 添加一个预先定义好的着色器。</p> <pre class="brush: js">var program = gl.createProgram(); // 添加一个预先定义的着色器 gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); if ( !gl.getProgramParameter( program, gl.LINK_STATUS) ) { var info = gl.getProgramInfoLog(program); throw "Could not compile WebGL program. \n\n" + info; } </pre> <h2 id="规范">规范</h2> <table class="standard-table"> <tbody> <tr> <th scope="col">规范</th> <th scope="col">状态</th> <th scope="col">注释</th> </tr> <tr> <td>{{SpecName('WebGL', "#5.14.9", "attachShader")}}</td> <td>{{Spec2('WebGL')}}</td> <td>Initial definition.</td> </tr> <tr> <td>{{SpecName('OpenGL ES 2.0', "glAttachShader.xml", "glAttachShader")}}</td> <td>{{Spec2('OpenGL ES 2.0')}}</td> <td>OpenGL man page.</td> </tr> </tbody> </table> <h2 id="浏览器兼容性">浏览器兼容性</h2> <p>{{Compat("api/WebGLRenderingContext", "WebGLRenderingContext.attachShader")}}</p> <h2 id="相关资料">相关资料</h2> <ul> <li>{{domxref("WebGLProgram")}}</li> <li>{{domxref("WebGLShader")}}</li> <li>{{domxref("WebGLRenderingContext.attachShader()")}}</li> <li>{{domxref("WebGLRenderingContext.compileShader()")}}</li> <li>{{domxref("WebGLRenderingContext.createProgram()")}}</li> <li>{{domxref("WebGLRenderingContext.createShader()")}}</li> <li>{{domxref("WebGLRenderingContext.deleteProgram()")}}</li> <li>{{domxref("WebGLRenderingContext.deleteShader()")}}</li> <li>{{domxref("WebGLRenderingContext.detachShader()")}}</li> <li>{{domxref("WebGLRenderingContext.getAttachedShaders()")}}</li> <li>{{domxref("WebGLRenderingContext.getProgramParameter()")}}</li> <li>{{domxref("WebGLRenderingContext.getProgramInfoLog()")}}</li> <li>{{domxref("WebGLRenderingContext.getShaderParameter()")}}</li> <li>{{domxref("WebGLRenderingContext.getShaderPrecisionFormat()")}}</li> <li>{{domxref("WebGLRenderingContext.getShaderInfoLog()")}}</li> <li>{{domxref("WebGLRenderingContext.getShaderSource()")}}</li> <li>{{domxref("WebGLRenderingContext.isProgram()")}}</li> <li>{{domxref("WebGLRenderingContext.isShader()")}}</li> <li>{{domxref("WebGLRenderingContext.linkProgram()")}}</li> <li>{{domxref("WebGLRenderingContext.shaderSource()")}}</li> <li>{{domxref("WebGLRenderingContext.useProgram()")}}</li> <li>{{domxref("WebGLRenderingContext.validateProgram()")}}</li> </ul>