私は iPhone 用のタイル ベースのゲーム エンジンを作成していますが、次の不具合を除けば、通常は動作します。基本的に、カメラは常にプレイヤーを画面の中央に保ち、プレイヤーに正しく追従するように移動し、静止しているときはすべてを正しく描画します。ただし、プレーヤーが移動している間、プレーヤーが歩いている表面のタイルは、次のようにグリッチします。
http://img41.imageshack.us/img41/9422/movingy.png
定常(正しい)と比較して:
http://img689.imageshack.us/img689/7026/still.png
なぜこれができるのか誰にも分かりますか?
これまでの回答に感謝します。浮動小数点エラーも私の最初の考えであり、タイルのサイズを少し大きくしようとしましたが、これは役に立ちませんでした. glClearColor を赤に変更しても黒いギャップが残るため、浮動小数点エラーではない可能性があります。一般にタイルは異なるテクスチャを使用するため、頂点配列を使用できるかどうかはわかりません (配列内のすべてに同じテクスチャを適用する必要があると常に考えていました。間違っていたら訂正してください)。 VBO が OpenGL ES で利用できるとは思わないでください。フィルタリングを最近傍に設定すると改善されますが、グリッチはまだ 10 フレームごとに発生し、ピクセル単位の結果は、とにかくこのソリューションが実行できないことを意味します。
私が現在行っていることと過去に行ったことの主な違いは、今回はワールド内の静止オブジェクトではなくカメラを動かしていることです (つまり、タイル、プレイヤーはまだ移動しています)。カメラを移動するために使用しているコードは次のとおりです。
void Camera::CentreAtPoint( GLfloat x, GLfloat y )
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(x - size.x / 2.0f, x + size.x / 2.0f, y + size.y / 2.0f, y - size.y / 2.0f, 0.01f, 5.0f);
glMatrixMode(GL_MODELVIEW);
}
このように物事を行うことに問題はありますか?もしそうなら解決策はありますか?