WebGLRenderingContext.useProgram
概要
useProgram
は、指定したWebGLProgram
の使用開始を指示するWebGL関数です。
関連
-
createProgram
WebGLProgram
を作成します。 -
attachShader
WebGLProgram
に、頂点とフラグメントのWebGLShader
をアタッチします。 -
linkProgram
WebGLProgram
とWebGLShader
をリンクします。
構文
void gl.useProgram(program);
引数
【program】
使用対象のWebGLProgram
を指定します。
戻り値
無し
例
【02-draw-triangle】より、一部抜粋
function initProgram(gl: WebGLRenderingContext) { // シェーダーコードをコンパイルして、頂点シェーダーとフラグメント(ピクセル)シェーダーを作成します。 var vertexShader = compileShader(gl, ShaderType.Vertex, vertexShaderStr) as WebGLShader; var fragmentShader = compileShader(gl, ShaderType.Fragment, fragmentShaderStr) as WebGLShader; // シェーダープログラム(頂点シェーダーとフラグメントシェーダーをまとめたもの)オブジェクトを作成します。 const shaderProgram = gl.createProgram(); if (shaderProgram == null) { alert('Failed to create WebGL program.'); return null; } // シェーダープログラムに頂点シェーダーとフラグメントシェーダーを設定します gl.attachShader(shaderProgram, vertexShader); gl.attachShader(shaderProgram, fragmentShader); // シェーダープログラムを「リンク」させて、シェーダープログラムを使用できるよう準備します gl.linkProgram(shaderProgram); // リンク処理でエラーが起きた場合は、その旨を表示してプログラム中断します if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { alert("Could not initialise shaders"); return null } // シェーダープログラムの使用開始を指示します gl.useProgram(shaderProgram); // 現在のシェーダープログラムから、アトリビュート変数"a_position"のロケーション(参照のようなもの)を取得します。 attributePosition = gl.getAttribLocation(shaderProgram, "a_position"); // "a_position"の頂点属性を使えるようにするために、GPUにこの頂点属性入力を有効化させます gl.enableVertexAttribArray(attributePosition); return shaderProgram; }