WebGL2シリーズサンプラーオブジェクト

序文

WebGL1では、画像の質感及びサンプリング情報は、テクスチャオブジェクトに書き込まれます。

地図画像上の情報を読み取る方法についてはGPUのサンプリング情報を知らせます。

私たちは、同じ画像のピクセル情報から、数回を読みたい、しかし、あなたが使用し濾過方法を読んで、すべての時間が同じでない場合、我々は二つの異なるテクスチャオブジェクトを作成する必要があります。

「あなたは、これは迷惑なああではないと言う」
WebGLの:「...」

サンプラーオブジェクト

WebGL2では、サンプル・オブジェクトの導入は、サンプリングされたオブジェクトを使用して、オブジェクト上のテクスチャフィルタリングサンプラーにパッケージすることができ、元のテクスチャのオブジェクトは、モードフィルタを指定することができないので、画像は、テクスチャを作成することができオブジェクト、異なるフィルタリングの方法、サンプラーを複数作成、オブジェクトのテクスチャは、テクスチャはオブジェクトと指定されたサンプリング図源及び読み出しモードを実装するオブジェクトにバインドすることができます。
テクスチャオブジェクトを分離し、サンプリングモード、およびテクスチャオブジェクトは、サンプル複数のオブジェクトに関連付けることができ、テクスチャと複数のオブジェクトは、サンプラーに関連付けることができます。
あなたはサンプラーオブジェクトを使用する場合は、WebGLのエンジンの一部は、コードの変更を生成する必要があります。

サンプラーオブジェクトを作成します。

。:CreateSamplerサンプラーオブジェクトは、次のような、GLによって作成することができます

var samplerA = gl.createSampler();

gl.createSampler方法

以下は、署名であるgl.createSampler

WebGLSampler gl.createSampler();

このメソッドは、パラメータを取らず、オブジェクトが作成されて良いサンプラーを返します。

サンプリング・パラメータを指定します

。SamplerParameteriパラメータはサンプラ方法GLによって指定することができます。

GL。samplerParameteri方法

以下は、GLである。SamplerParameteri署名

void gl.samplerParameteri(sampler, pname, param);
void gl.samplerParameterf(sampler, pname, param);

最初のパラメータは、最初のパラメータは、パラメータの名前を指定する必要オブジェクトサンプラーである、第三のパラメータは次のようにパラメータがあった前記パラメータ値であり、
これらのパラメータは、

  • gl.TEXTURE_MIN_FILTER
  • gl.TEXTURE_MAG_FILTER
  • gl.TEXTURE_WRAP_S
  • gl.TEXTURE_WRAP_T
  • gl.TEXTURE_COMPARE_MODE
  • gl.TEXTURE_COMPARE_FUNCは
    テクスチャオブジェクトの元WebGL1を指定する必要のあるパラメータで見られるが、今のサンプラーオブジェクトに移動することができます。

テクスチャサンプラユニットに結合しています

機能gl.bindSampler(単位、サンプラー)によって、サンプラーは、指定されたテクスチャに結合し、関数シグネチャを意味します。

void gl.bindSampler(unit, sampler);

例えば、次のコード:

gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.bindSampler(0, samplerA);

このとき、samplerAオブジェクトへのオブジェクト及びテクスチャ当量は、一緒にオリジナル濾過samplerAからテクスチャユニット0、ソースオブジェクトからテクスチャデータを読み出すため、この時間を結合しました。

サンプラーオブジェクトを削除します。

。DeleteSampler方法は、以下のようにGL、関数のシグネチャをサンプリングすることによって指定されたオブジェクトを削除します。

void gl.deleteSampler(sampler);

パラメータは、そのようなコードとして、オブジェクトを削除するにはサンプラーを指定します。

gl.deleteSampler(sampler);

例のコードスニペット

以下は、サンプルコードは、サンプラーを使用しています

var samplerA = gl.createSampler();
gl.samplerParameteri(samplerA, gl.TEXTURE_MIN_FILTER, gl.NEAREST_MIPMAP_NEAREST);
gl.samplerParameteri(samplerA, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.samplerParameteri(samplerA, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.samplerParameteri(samplerA, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);

var samplerB = gl.createSampler();
gl.samplerParameteri(samplerB, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
gl.samplerParameteri(samplerB, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.samplerParameteri(samplerB, gl.TEXTURE_WRAP_S, gl.MIRRORED_REPEAT);
gl.samplerParameteri(samplerB, gl.TEXTURE_WRAP_T, gl.MIRRORED_REPEAT);

// ...

gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.bindSampler(0, samplerA);

gl.activeTexture(gl.TEXTURE1);
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.bindSampler(1, samplerB);

国民の関心番号へようこそ「ITman tert-ブチル彪。」tert-ブチル彪、開発経験、現職のシステムアーキテクト、テクニカルディレクター、技術的なトレーナー、プロのプランナーの10年を持っています。コンピュータグラフィックス、WebGLの、フロントエンドの可視化の深い研究があります。スキルやトレーニング、キャリア計画プログラマ思考トレーニングプログラマに興味があります。
番号tert-ブチル彪ITman公共

おすすめ

転載: www.cnblogs.com/flyfox1982/p/11480674.html