OpenGLで新しいステッカーを作っています。キャラクターは、テクスチャ付きのクワッドを使用して描画されます。テクスチャは、FreeType2 でレンダリングされたビットマップから作成されます。
スクロールはdx
、経過時間と指定された速度に基づいて a を計算し、「世界 x: 」を更新することによって行われますx += dx
。経過時間に影響を与えることはできないので、dx
などの浮動小数点値を取る必要があります0.5
。
整数への丸めは実際には機能しません。どのように行っても、非常に目立つジッターが発生します。反復ごとに「ワールド x」の値を丸め、「ワールド x」でフロートのままにしますが、の代わりにglTranslate2f
を使用して、 に与えられた値を丸めてみました。いずれにせよ、小さいピクセル サイズでは常に許容できないジッターが発生するため、丸めはオプションではありません。GL_NEAREST
GL_LINEAR
つまり、浮動小数点値でレンダリングし、アンチエイリアシングを使用する必要があります (たとえばGL_LINEAR
)。abs(x - (int)x)
問題は、小さなピクセル サイズでは、文字が に近い0.5
か近いかに応じて、文字が拡大または縮小するように見えること0.0
です。この拡大と縮小は、一種の「エッジのちらつき」として認識できます。
この認識された成長と縮小をなくすにはどうすればよいでしょうか? シェーダーに飛び込んで、独自のアンチエイリアシング アルゴリズムを実装する必要があるのでしょうか? 他のアイデアはありますか?