我正在为 iPhone 编写一个基于磁贴的游戏引擎,除了以下故障外,它通常可以正常工作。基本上,相机将始终将玩家保持在屏幕的中心,并且它会移动以正确地跟随玩家并在静止时正确地绘制所有内容。然而,当玩家移动时,玩家正在行走的表面瓷砖会出现故障,如下所示:
http://img41.imageshack.us/img41/9422/movingy.png
与静止相比(正确):
http://img689.imageshack.us/img689/7026/still.png
有谁知道为什么会这样?
感谢您到目前为止的回复。浮点错误也是我的第一个想法,我尝试稍微增加瓷砖的大小,但这并没有帮助。将 glClearColor 更改为红色仍然会留下黑色间隙,因此可能不是浮点错误。由于瓷砖一般会使用不同的纹理,我不知道是否可以使用顶点数组(我一直认为相同的纹理必须应用于数组中的所有内容,如果我错了,请纠正我),我不要认为 VBO 在 OpenGL ES 中可用。将过滤设置为最近邻会有所改善,但故障仍然每十帧左右发生一次,并且像素级结果意味着该解决方案无论如何都不可行。
我现在所做的与过去所做的主要区别在于,这一次我移动的是相机而不是世界中的静止物体(即瓷砖,玩家仍在移动)。我用来移动相机的代码是:
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);
}
以这种方式做事有问题吗?如果有,有解决方案吗?