OpenGL ES 2.0 には、テクスチャ サンプリングに関する深刻な精度の問題があります。同様の問題に関するトピックを見てきましたが、この「歪んだ OpenGL ES 2.0 テクスチャ」の問題に対する実際の解決策はまだ見ていません。
これは、テクスチャのイメージ フォーマットや OpenGL カラー バッファとは関係ありません。精度エラーのようです。精度が失敗する具体的な原因はわかりません。頂点シェーダーに渡された頂点位置をスケーリングするだけでは問題が解決しないため、この歪みを引き起こすのはジオメトリのサイズだけではないようです。
テクスチャの歪みの例を次に示します。
歪んだテクスチャ (OpenGL ES 2.0 上): http://i47.tinypic.com/3322h6d.png
テクスチャが通常どのように見えるか (OpenGL ES 2.0 でも): http://i49.tinypic.com/b4jc6c.png
テクスチャの問題は、OpenGL ES 2.0 の小規模なジオメトリに限定されています。それ以外の場合、テクスチャ サンプリングは正常に見えますが、頂点データが XYZ(0,0,0) の原点から離れるほど、粒子の粗い効果が徐々に悪化します。
これらのテクスチャの問題は、デスクトップの OpenGL では発生しません (Windows XP、Windows 7、および Mac OS X では正常に動作します)。
問題が発生するのは Android、iPhone、または WebGL (OpenGL ES 2.0 に似ています) だけです。
すべてのテクスチャは 2 のべき乗ですが、問題は引き続き発生します。
頂点データのスケーリング- 頂点の XYZ 位置の値は、-65536 から +65536 浮動小数点の範囲です。
- これが大きいことに気付いたので、頂点の位置を 1024 で割ってジオメトリを縮小し、うまくいけばより正確な浮動小数点の精度を得ようとしましたが、これはテクスチャの歪みの問題を修正または軽減しませんでした
モデルビューのスケーリングまたは射影行列のスケーリングは役に立ちません
テクスチャ フィルタリングオプションを変更しても効果がない
- ミップマッピングを無効にするか、GL_NEAREST/GL_LINEAR を使用しても何も起こりません
- 異方性を有効/無効にしても何も起こりません
- GL_CLAMP を使用してもバンディング効果が発生する
頂点シェーダーに渡されたテクスチャ座標を分割し、それらをフラグメント シェーダーで正しい値に乗算しても機能しません。
precision highp sampler2D、highp float、highp int - フラグメントまたは頂点シェーダーでは何も変更されませんでした (lowp/mediump も機能しませんでした)
私は、この問題はある時点で解決されなければならないと考えています.OpenGL ES 2.0ベースのゲームが大規模で非常に詳細なジオメトリをレンダリングできることを見て