3

OpenGL 1.4固定機能マルチテクスチャを使用する場合、次のステージに渡される前に、すべてのテクスチャステージの出力が[0、1]にクランプされますか?

仕様によると(153ページ):

TEXTURE_ENV_MODEの値がCOMBINEの場合、テクスチャ関数の形式は、表3.24に従って、COMBINE_RGBとCOMBINE_ALPHAの値によって異なります。次に、テクスチャ関数のRGBとALPHAの結果に、それぞれRGB_SCALEとALPHA_SCALEの値を掛けます。結果は[0、1]にクランプされます。

しかし、私のテストでは、それは起こりませんでした。RGBコンポーネントのテクスチャ環境は次のとおりです。

  • ステージ1:GL_TEXTUREからGL_CONSTANTを減算します。ここで、テクスチャ全体は黒で、GL_CONSTANTの色は(.5, .5, .5, 1.0)
  • ステージ2:GL_TEXTUREをGL_PREVIOUSに追加します。ここで、テクスチャはテストレインボーです。

ステージ1のGL_CONSTANTカラーを明るくすると、出力が目に見えて暗くなります。

期待するクランプを実現するために有効にできる状態はありますか?

4

2 に答える 2

4

ドライバーのバグである可能性は高いです。固定機能のハードウェアはもう存在しないため、すべてシェーダーでエミュレートされます。また、シェーダーではクランプがデフォルトの動作ではないため、コンバインステージ間でクランプすることを忘れないでください。そして、彼らがそれをテストするのを忘れた場合...おっと。

どちらにしても、できることはあまりありません。仕様が示すように実装がクランプされない場合、できる最善の方法は、バグレポートを提出することです。

于 2012-02-09T18:51:36.300 に答える
0

はい。仕様の3.8.13章には、次のように書かれています。

CfとAfは、入ってくるフラグメントの原色成分です。CsとAsは、表3.21に示すように、フィルター処理されたテクスチャ値Rt、Gt、Bt、At、Lt、およびItから導出されたテクスチャソースカラーのコンポーネントです。CcとAcは、テクスチャ環境の色のコンポーネントです。CpとApは、前のテクスチャ環境から得られたコンポーネントです(テクスチャ環境0の場合、CpとApはそれぞれCfとAfと同じです)。CvとAvは、テクスチャ関数によって計算される原色成分です。

これらの色の値はすべて[0;1]の範囲にあります。テクスチャ関数は、表3.22、3.23、および3.24で指定されています。

私はあなたの特定のケースについては知りませんが、それはあなたの最初の(そしてタイトルの)質問に答えます。

于 2016-08-01T18:08:26.857 に答える