我在为我的OpenGL应用程序创建一个可靠的游戏引擎时遇到了麻烦.这是一个由几个精灵组成的游戏.
我创建的对象基本上都是我的所有精灵.另一个名为"gameEngine"的对象每隔一秒钟(一个计时器)循环一组计算,从而产生新的游戏变量.之后,精灵对象现在知道他们的绘图数据.
问题是,在收集完所有绘图数据后,绘图应该恰好在恰当的时刻进行,从而产生稳定的动画.根据当前场景的复杂程度,游戏计算需要不确定的时间.因此,实际绘图发生在不同的时刻.我该如何防止这种情况发生?
为了澄清,我的方法类似于:
// Every something of a second I call tick -(void)tick { drawingData = gameEngine(); draw(drawingData); }
必须有一个最佳实践来构建这样的游戏引擎,我不知道?
游戏循环有很多种,但是更好的游戏循环将动画与绘图或更经典的术语模型和视图分开.基本上,您需要构建游戏模型,您可以在其中建立时间的流逝并更新模型(物理帧速率),然后在连续的时刻(渲染帧速率)独立渲染模型的快照.
这里有几篇文章更详细地解释了游戏循环的一些变化及其优缺点.还有源代码.我希望它有所帮助.
修复你的时间步!和 deWiTTERS游戏循环文章