5

どのようGL_TEXTURE_MIN_LODに、GL_TEXTURE_MAX_LODそしてLOD_BIAS働きますか?

視覚的に確認するために、ミップマッピングを使用して 6*6 テクスチャを作成しMIN_LODましたMAX_LOD。変更LOD_BIASしても、o/p には影響しません。それがどのように機能するかを正確に理解することはできません。

誰かが例を挙げて説明できますか?

編集:ミップマップレベルを手動で作成しているため、どのレベルがピックアップされているかを確認できます。これが私のコードです:

glTexImage2D(target, 0, GL_RGBA,9 ,9, 0, GL_RGBA, GL_BYTE,subpix);
glTexImage2D(target, 1, GL_RGBA,4 ,4, 0, GL_RGBA, GL_BYTE,&subpix[4]);
glTexImage2D(target, 2, GL_RGBA,2 ,2, 0, GL_RGBA, GL_BYTE,&subpix[10]);
glTexImage2D(target, 3, GL_RGBA,1 ,1, 0, GL_RGBA, GL_BYTE,&subpix[18]);
glSamplerParameterf(sampler,GL_TEXTURE_MIN_LOD,0.862);
glSamplerParameterf(sampler,GL_TEXTURE_MAX_LOD,0.99);
glSamplerParameterf(sampler,GL_TEXTURE_LOD_BIAS,0.0);

この場合、2*2 の 2 番目のミップマップ レベルが必要になると予想していますが、4*4 の 1 番目のミップマップ レベルが選択されます。min lod < 0.5 に設定すると、9*9 の 0 レベルがかかります。そして、これは max lod に設定された値に関係なく発生します。

4

1 に答える 1

1

最初のいくつかの参照:

TEXTURE_MIN_LOD最小詳細レベル パラメータを設定します。この浮動小数点値は、最高解像度のミップマップ (最低ミップマップ レベル) の選択を制限します。初期値は -1000 です。

TEXTURE_LOD_BIASテクスチャ サンプリングの前に、テクスチャの level-of-detail パラメータに追加される固定バイアス値を指定します。指定された値は、シェーダーが提供するバイアス値 (存在する場合) に追加され、その後、実装定義の範囲 (bias max bias max) にクランプされます。ここで、bias max は実装定義の定数の値ですGL_MAX_TEXTURE_LOD_BIAS。初期値は0.0

したがって、mipmap の選択に驚いた場合は、次の手順をお勧めします (必ずしも順序どおりではありません)。

  • ミップマップを手作業で作成して、互いに視覚的に区別できるようにする
  • mipmap が正しく提供されていることを確認します。
  • LOD_BIAS設定がすべての値を範囲外にするだけでなく、サンプラーが効果的に常に最大または最小 LOD を使用するようになっていないことを確認します。

このあたりを検索すると、 が見つかりましtextureQueryLod た。また、デバッグを支援することにも関心があるかもしれません。

于 2013-04-04T08:44:31.293 に答える