この質問を読みやすくすることができるかどうか見てみましょう。
私はOpenGLESで2Dタイルベースのエンジンを作成しており、これを昔ながらのラスターエンジンのように見せることを目的としています。私のアートアセットはすべてネイティブ解像度(つまり、1:1ピクセルアート)で、長方形のポリゴンにマッピングされています。OpenGLビューは直交しており、長方形(0.0、0.0)から(screen.width、screen.height)にまたがっています。 )。これは、ディスプレイ上の各ピクセルがXY座標平面の「仮想」ピクセルの正方形に対応し、それがタイルの1つのピクセルに対応することを期待して行いました。(タイルは16.0 x 16.0で、私の世界の起源は明らかに[0.0,0.0]です。)
近似誤差のために、私のエンジンは「偽物」に見えると確信していました。たとえば、タイルピクセルがディスプレイに直接書き込まれていないため、誤ったピクセルがフェッチされることがあると思いました。また、タイルが実際のディスプレイピクセルと位置合わせされていない場合は、カメラの動きによってOpenGLが補間することも確信していました。
結局のところ、OpenGLはラスターエンジンとほぼ同じように動作します。カメラが静止しているとき、各仮想ピクセルはディスプレイ上のピクセルに完全に対応します。カメラが動いているとき、タイルは補間によってスムーズに移動するのではなく、一度に1ピクセルの行/列を「スナップ」します。(これは、モーションが非常に遅い場合でも発生します。)好奇心から、タイルを1.1倍にスケーリングしようとしましたが、予想どおり、タイルが濁って見え始め、スナップ動作が停止しました。それでは、OpenGLは、レンダリングするものがディスプレイに完全に位置合わせできるかどうかによって、動作が異なるというのは本当ですか?
仕様のどこでこれらの問題に関する情報を見つけることができますか?また、OpenGLがこのように動作し続けることをどのように保証できますか?動作は理論的にはいつでも変更される可能性があるため、私はよく理解していないデフォルトを使用することに不快感を覚えます。
ありがとうございました!