2

GLSLで単純なピクセルシェーダーを実行しています。ピクセル化された境界で見られるこの境界アーティファクトを除いて、すべてが期待どおりに機能しています。

コードは次のとおりです。

precision mediump float;

uniform sampler2D Texture0;
uniform int pixelCount;
varying vec2 fTexCoord;

void main(void)
{
   float pixelWidth = 1.0/float(pixelCount);

   float x = floor(fTexCoord.x/pixelWidth)*pixelWidth + pixelWidth/2.0;
   float y = floor(fTexCoord.y/pixelWidth)*pixelWidth + pixelWidth/2.0;

   gl_FragColor = texture2D(Texture0, vec2(x, y));
}

添付画像をご覧ください。

なぜこれが起こっているのか私にはわかりません。
これで私を助けてください...

ピクセル化間の境界アーティファクト。

4

1 に答える 1

1

あなたの問題はテクスチャの補間に関係していると思います。

テクスチャサンプラーに使用GL_NEARESTしていますか(これにより、テクスチャサンプラーは補間の代わりにポイントサンプラーを使用します)?

glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );

また、おそらくミップマップを使用すべきではありません。

また、実際のテクスチャイメージがどのように見えるか、およびジオメトリがどのように見えるかを知ることも役立ちます(単一のクワッドをレンダリングしていると仮定します)。

于 2012-07-12T13:44:48.583 に答える