1

要素が互いに並んでいるボックスに配置された画像アトラスがあります。ピクセルごとにレンダリングされるようにこれらを配置/スケーリングすると、すべて正常に機能します。ただし、サブピクセルの配置を開始すると、アトラスの隣接する画像から出血する可能性があります。

私の理解が正しければ、これはフラグメント シェーダー、またはテクスチャ位置の補間が原因です。テクスチャ位置の境界に近いピクセルは、隣接するピクセルから値の一部を取得することになります。

この問題は通常、ミップマップでレイヤーを使用する場合にのみ表示されるため、よくわかりません。私の理解は正しいですか、それとも何か間違っていますか? 私はそれを修正する方法を知っています (タイリング テクスチャと非タイリング テクスチャの両方) が、最初に基本が正しいことを確認したいと思います。

4

2 に答える 2

3

使用するレンダリングエンジンとプラットフォームによって異なります。

簡単な解決策は、テクスチャアトラスの各ボックスの間に1ピクセルの透明な境界線を追加することです。これにより、ほとんどの場合、アーティファクトの問題が解決されます。

プレーンなOpenGLでは、頂点の位置は浮動小数点であるため、サブピクセルの精度を簡単に実現できます。アンチエイリアシングは、スプライトを整数以外の境界に配置すると、openglの実装によって自然に発生します。品質はOpenGLの実装によって異なります。また、glHint()を使用して、安全を確保することもできます。

glHint()ドキュメント

于 2012-08-28T07:07:25.140 に答える
1

私が聞いたところによると、サブピクセル操作を行うと、ピクセルが互いにブレンドされ、MSAA がアンチエイリアシングを実現するために実際に行うことになります。

于 2012-08-28T10:15:30.900 に答える