activeTexture

概要

activeTextureは、以降に呼び出すテクスチャ系関数の設定対象となるテクスチャスロットを指定する関数です。
CPU側におけるテクスチャ系API操作の都合上、存在する関数です。この関数自体がGPUに対して、何らかのテクスチャに関する設定変更を行うものではありません。

gl.activeTexture(gl.TEXTURE0 + unit)

影響を与えるテクスチャ系関数

  • gl.bindTexture

関連

構文

void activeTexture(enum texture);

引数

  • texture
    テクスチャ系関数呼び出しの設定対象となる、テクスチャスロットインデックス。
    有効な値は、TEXTURE0 ~ TEXTUREi (i = MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1)
    デフォルト値: TEXTURE0

戻り値

None

サンプルコード

// 最小環境で0...7まで。環境によっては8以上のインデックスが使える場合があります。 const textureSlotIndex = 5; // gl.TEXTURE5(テクスチャスロット5)を、操作対象のテクスチャスロットとして選択します。 gl.activeTexture(gl.TEXTURE0 + textureSlotIndex); // テクスチャスロット5に対してテクスチャオブジェクト「someTexture」を紐づけます。 gl.bindTexture(gl.TEXTURE_2D, someTexture); // シェーダープログラム内のテクスチャサンプラー"uSampler"とテクスチャスロット5番を紐づけます。 gl.uniform1i(gl.getUniformLocation(shaderProgram,"uSampler"), 5);

背景

現在のGPUはシェーダー内で複数のテクスチャを同時に使用することができます。
シェーダー内で利用できるテクスチャの管理番号を「テクスチャスロット」と呼びます。

補足

まだ一度もactiveTextureを呼んでいないなら、デフォルトスロットである0が指定されている状態です。
テクスチャを同時に1つしか使用しないのであれば、activeTexture関数を使う必要はありません。

Links

MDN: WebGLRenderingContext.activeTexture()