Opengl es 如何告诉OpenGL多久绘制一次?
好吧,我听上去像个白痴。来吧 我已经做了大约一年的iOS开发了,但直到今晚我才开始做任何与OpenGL相关的事情。我遵循了杰夫·拉马尔奇的绝妙指南,画了一个看起来很整洁的三角形,我把它翻过来。我是一个娱乐程序员 好的,这是一个愚蠢的问题:我如何设置OpenGL的位置来连续执行glRotatef和glDrawArrays+friends,或者以每秒设置的帧数执行?我试过用谷歌搜索它,但真的找不出好的搜索词Opengl es 如何告诉OpenGL多久绘制一次?,opengl-es,frame-rate,Opengl Es,Frame Rate,好吧,我听上去像个白痴。来吧 我已经做了大约一年的iOS开发了,但直到今晚我才开始做任何与OpenGL相关的事情。我遵循了杰夫·拉马尔奇的绝妙指南,画了一个看起来很整洁的三角形,我把它翻过来。我是一个娱乐程序员 好的,这是一个愚蠢的问题:我如何设置OpenGL的位置来连续执行glRotatef和glDrawArrays+friends,或者以每秒设置的帧数执行?我试过用谷歌搜索它,但真的找不出好的搜索词 提前感谢,准备回答更多的问题。我不是这方面的专家,但你不能将旋转/绘制命令放在while循环
提前感谢,准备回答更多的问题。我不是这方面的专家,但你不能将旋转/绘制命令放在while循环中,当按下某个按钮或特定事件发生时结束吗?你应该阅读游戏循环的概念
是一个很好的资源,可以帮助您入门。虽然其他人对OpenGL ES的一般情况提出了很好的建议,但我知道您可能正在使用iOS,Will,因此有一个更好的特定于平台的替代方案。在您的情况下,我相信CADisplayLink会为您提供更好的服务,它会触发与屏幕刷新率同步的回调。使用它,您将获得比使用计时器或循环中的某种轮询更平滑的更新 正如我在回答中所描述的,当与中央大调度相结合时,这是特别有效的。当我从使用循环切换到CADisplayLink进行更新时,我的渲染在所有iOS设备上都变得更加平滑,因为丢弃的帧更少。再加上GCD,情况就更好了
您可以参考我的代码以了解此操作的示例(请参阅SLSMoleculeGLViewController以了解如何使用此设置自动旋转动画)。上次我检查时,苹果的OpenGL ES应用程序模板也使用了CADisplayLink进行更新。谢谢!在这件事上,我和埃里克有个人冲突。我必须向您展示我们在WWDC的工作内容。:)