2010-11-19 6 views
2

現在、2048 x 2048ピクセルの3つの512 x 512テクスチャが格納されたテクスチャアトラスがあります。オブジェクトには1つのテクスチャしか適用されません。だから、そのテクスチャに対するテクスチャアトラス上の正しい位置に(ゼロから1へ)テクスチャ座標を位置決めするために、次のコードを使用する:GLSLのマニュアルGL_REPEAT

color = texture2D(tex_0, vec2(0.0, 1024.0/2048.0) + mod(texture_coordinate*vec2(40.0), vec2(1.0))*vec2(512.0/2048.0)); 

問題は、私はこれを適用すると、黒の境界が存在することですテクスチャの周り。私は、OpenGLはその境界の場所に2つのピクセルをブレンドすることができないため、これが原因だと推測します。

どうすれば境界を取り除くことができますか?

編集* 私はすでに開始境界と終了境界をテクスチャの中心に移動しようとしましたが、それは機能しませんでした。

編集* 問題の原因がわかりました。自動ミップマップ生成では、テクスチャアトラスのテクスチャをブレンドしています。これは私自身のミップマッピング機能を記述する必要があることを意味します。 (限り私が言うことができる)

誰かが良いアイデアを持っている場合は、投稿してください。

答えて

1

通常の2Dテクスチャをテクスチャのグリッドでテクスチャアトラスとして使用する代わりに、GL_2D_TEXTURE_ARRAY機能を使用して、正しくミップマップして正しく繰り返される3Dテクスチャを作成しました。そのようにして、テクスチャはより高いミップマップレベルでブレンドされませんでした。

+0

うーん...すてきで優雅なソリューション。現代のGLでは、テクスチャアトラスが時代遅れになっていますか? – Kos

+0

さて、2つのメソッドのパフォーマンスがどのように比較されているかはわかりません。つまり、テクスチャ配列のメソッドがよりエレガントであっても、通常のテクスチャアトラスメソッドが高速になる可能性があります。それは調べる価値のあるものになります。 –