我如何告诉OpenGL绘制内容的频率?

时间:2011-06-03 08:12:04

标签: opengl-es frame-rate

好吧,我听起来像个白痴。到此为止。

我一直在进行iOS开发大约一年,但只有今晚我才开始做任何与OpenGL相关的事情。我跟随了Jeff LaMarche的精彩指南,我正在画一个整洁的三角形,我让它翻转一下。我是一个娱乐程序员。

好的,这是一个愚蠢的问题部分:我如何设置OpenGL的某个地方连续执行glRotatef和glDrawArrays +朋友,或者每秒设定的帧数?我试过谷歌搜索它,但实际上无法提出良好的搜索条件。

提前致谢,并准备好提出更多这些问题。

3 个答案:

答案 0 :(得分:2)

虽然其他人对OpenGL ES的一般情况提出了很好的建议,但我知道你可能在这里工作,Will,所以有一个更好的平台特定的替代方案。在你的情况下,我相信你会更好地服务于CADisplayLink,它会触发与屏幕刷新率同步的回调。使用它,您将获得比定时器或循环内的某种轮询更加平滑的更新。

与大中央调度相结合时,这一点特别有效,正如我在答案here中所描述的那样。当我从使用循环切换到CADisplayLink进行更新时,由于丢帧数减少,我在所有iOS设备上的渲染变得更加平滑。在此基础上添加GCD会让事情变得更好。

您可以参考我的Molecules代码,了解其实例(请参阅SLSMoleculeGLViewController了解我的自动旋转是如何设置动画的)。 Apple的OpenGL ES应用程序模板也使用CADisplayLink进行更新,最后我查了一下。

答案 1 :(得分:1)

你应该阅读游戏循环的概念。

http://entropyinteractive.com/2011/02/game-engine-design-the-game-loop/ 是一个很好的资源,可以帮助你入门。

答案 2 :(得分:0)

嗯,我不是这方面的专家,但你不能把旋转/绘制命令放在一个while循环中,当一个按钮被按下或特定事件发生时结束?