Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl es 如何告诉OpenGL多久绘制一次?_Opengl Es_Frame Rate - Fatal编程技术网

Opengl es 如何告诉OpenGL多久绘制一次?

Opengl es 如何告诉OpenGL多久绘制一次?,opengl-es,frame-rate,Opengl Es,Frame Rate,好吧,我听上去像个白痴。来吧 我已经做了大约一年的iOS开发了,但直到今晚我才开始做任何与OpenGL相关的事情。我遵循了杰夫·拉马尔奇的绝妙指南,画了一个看起来很整洁的三角形,我把它翻过来。我是一个娱乐程序员 好的,这是一个愚蠢的问题:我如何设置OpenGL的位置来连续执行glRotatef和glDrawArrays+friends,或者以每秒设置的帧数执行?我试过用谷歌搜索它,但真的找不出好的搜索词 提前感谢,准备回答更多的问题。我不是这方面的专家,但你不能将旋转/绘制命令放在while循环

好吧,我听上去像个白痴。来吧

我已经做了大约一年的iOS开发了,但直到今晚我才开始做任何与OpenGL相关的事情。我遵循了杰夫·拉马尔奇的绝妙指南,画了一个看起来很整洁的三角形,我把它翻过来。我是一个娱乐程序员

好的,这是一个愚蠢的问题:我如何设置OpenGL的位置来连续执行glRotatef和glDrawArrays+friends,或者以每秒设置的帧数执行?我试过用谷歌搜索它,但真的找不出好的搜索词


提前感谢,准备回答更多的问题。

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

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


是一个很好的资源,可以帮助您入门。

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

正如我在回答中所描述的,当与中央大调度相结合时,这是特别有效的。当我从使用循环切换到CADisplayLink进行更新时,我的渲染在所有iOS设备上都变得更加平滑,因为丢弃的帧更少。再加上GCD,情况就更好了


您可以参考我的代码以了解此操作的示例(请参阅SLSMoleculeGLViewController以了解如何使用此设置自动旋转动画)。上次我检查时,苹果的OpenGL ES应用程序模板也使用了CADisplayLink进行更新。

谢谢!在这件事上,我和埃里克有个人冲突。我必须向您展示我们在WWDC的工作内容。:)