WebGLRenderingContext.useProgram

概要

useProgramは、指定したWebGLProgramの使用開始を指示するWebGL関数です。

関連

  • createProgram
    WebGLProgramを作成します。

  • attachShader
    WebGLProgramに、頂点とフラグメントのWebGLShaderをアタッチします。

  • linkProgram
    WebGLProgramWebGLShaderをリンクします。

構文

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; }