私は、頂点の同じセットを持ち、お互い隣になるように翻訳された2つのオブジェクトの間に、時折1つのピクセルホールがあるという問題に遭遇しました。私は単純な四角い線でこれを再現することができました。翻訳された四角間のOpenGL Pixel Gap
四角形は1単位で1単位、0,0 centerです。私はglTranslatefを使って各四角形を位置に移動させて、これらの四角形を一列に配置しました(この場合、私が提供する値は常に整数です)。私は、カメラが特定の位置にあるとき、OpenGLはこれらの四角形の間に1つのピクセルギャップを残して、後ろに何があるかを見ることができることを発見しました(例えば、バックバッファをクリアした色)。コーナーに0,0を持つように四角形の頂点を変更しても問題は解決しませんでした。
例コード:
glPushMatrix();
glTranslatef(0, 0, 0);
drawSquare();
glPopMatrix();
glPushMatrix();
glTranslatef(0, 0, 1);
drawSquare();
glPopMatrix();
glPushMatrix();
glTranslatef(0, 0, 2);
drawSquare();
glPopMatrix();
画像は、このような場合を示しています。私は問題のピクセルの周りのスクリーンショットに赤い円を追加しました。私がこれまでにそうすること、これが事実である理由は分からない、と最終的に「世界」は、単純な正方形のため平方翻訳を排除する座標の指定が可能である(と問題を解決)しながら、
最初に問題に気づいた複雑なジオメトリは実際には実用的ではありません。
と思われます。ユーザーがブロックを置いて建物を作り上げることを可能にする他のゲームがどうやって周りを回ったのか知っていますか?彼らは実際に新しいメッシュを計算しましたが、既存のものを変換するのではなく、小さなサブピクセルのオーバーラップを作成するだけでしたか?私は翻訳をやっていることを発見しました(そしてまた90度の回転も)自分自身も問題を解決しています(エラーははるかに複雑なカメラ変換との組み合わせから来ていると思います)。 –