Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/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
Cocoa Mac开发人员-如何刷新2d游戏的视图?_Cocoa_Macos_2d_Redraw - Fatal编程技术网

Cocoa Mac开发人员-如何刷新2d游戏的视图?

Cocoa Mac开发人员-如何刷新2d游戏的视图?,cocoa,macos,2d,redraw,Cocoa,Macos,2d,Redraw,如果你看到我的,你就会知道我开始尝试在mac上制作简单的2d游戏。在那里,我决定使用哪一个库(OpenGL或Quartz),但不管怎样,我都必须使用Cocoa使其成为一个好的Mac应用程序,并用于窗口和视图(使用OpenGL、NSOpenGLView)。显然,对于一个游戏来说,视图必须每秒重画很多次。要重新绘制视图,需要执行[视图设置需要显示:是],但我读到你不应该这么做很多次(因为它花费很多)。但是我应该如何重新绘制视图,例如,在2d游戏中以合理的fps重新绘制视图?谢谢。必须重新绘制的规则并

如果你看到我的,你就会知道我开始尝试在mac上制作简单的2d游戏。在那里,我决定使用哪一个库(OpenGL或Quartz),但不管怎样,我都必须使用Cocoa使其成为一个好的Mac应用程序,并用于窗口和视图(使用OpenGL、NSOpenGLView)。显然,对于一个游戏来说,视图必须每秒重画很多次。要重新绘制视图,需要执行
[视图设置需要显示:是],但我读到你不应该这么做很多次(因为它花费很多)。但是我应该如何重新绘制视图,例如,在2d游戏中以合理的fps重新绘制视图?谢谢。

必须重新绘制的规则并不适用于游戏。游戏通常尝试以显示器的刷新率重新绘制,或者尽可能接近该刷新率


本页介绍了如何在cocoa中进行OpenGL渲染循环:

苹果已经说过,您不应该以“尽可能快地绘制”的方式编写循环。您应该将绘图限制在合理的范围内,如60Hz;否则,您将浪费CPU时间而不做任何有用的事情。如果你是vsync'd,这应该会自动为你发生。如果没有,请在那里放一个限速器。你的笔记本电脑用户的膝上电脑会感谢你。我只是假设读者会知道vsync将“可能”限制在“尽可能快”。我应该说得更清楚些。