WebGLRenderingContext.compileShader
概要
compileShader
は、createShader
とshaderSource
で設定したGLSLシェーダーをコンパイルします。
関連
-
createShader
WebGLShader
オブジェクトを生成します。 -
shaderSource
WebGLShader
オブジェクトにシェーダーコード文字列を関連づける関数です。シェーダーコンパイルの前に、まずこの関数でコンパイル対象のシェーダーコード文字列を設定する必要があります。 -
コンパイルしたシェーダーオブジェクトは、
WebGLProgram
で使用することができます。
構文
void gl.compileShader(shader);
引数
【shader】
頂点、またはフラグメントのWebGLShader。
戻り値
無し
例
【02-draw-triangle】より、一部抜粋
function compileShader(gl: WebGLRenderingContext, shaderType: ShaderType, shaderStr: string) { // シェーダーオブジェクトを作ります let shader: WebGLShader | null; if (shaderType == ShaderType.Vertex) { shader = gl.createShader(gl.VERTEX_SHADER); } else if (shaderType == ShaderType.Fragment) { shader = gl.createShader(gl.FRAGMENT_SHADER); } if (shader! == null) { alert('Failed to create WebGL shader.'); return null; } // シェーダーコードをWebGLに読み込ませます gl.shaderSource(shader, shaderStr); // 読み込ませたシェーダーコードをコンパイルさせます gl.compileShader(shader); // コンパイルがエラーになった場合は、原因を表示させます if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { alert(gl.getShaderInfoLog(shader)); return null; } return shader; }