2009-11-18 58 views
2

如果你看到我的other question,你就会知道我开始尝试在Mac上制作简单的2D游戏。在那里我决定使用哪个库(OpenGL或Quartz),但不管我要用Cocoa来制作一个漂亮的Mac应用程序,还是用于窗口和视图(使用OpenGL,NSOpenGLView)。显然,对于一款游戏来说,视图必须每秒重绘多次。要重画一个视图,你需要做[view setNeedsDisplay:YES];,但我读过你不应该多次这样做(因为它花费很多)。但我应该如何重新绘制视图,例如在一个合理的FPS为2D游戏?谢谢。Mac Dev - 如何刷新2d游戏的视图?

回答

2

“只有重绘,如果你必须”规则并不真正适用于游戏。游戏通常会尝试以显示器的刷新率重新绘制,或尽可能接近该速率。

此页面介绍如何使OpenGL渲染循环中的可可:http://developer.apple.com/mac/library/qa/qa2004/qa1385.html

+0

谢谢,我会检查了这一点。 – mk12 2009-11-18 23:58:21

+1

苹果已经表示,你不应该写你的循环为“尽可能快”。你应该限制你的绘图到60Hz等合理的东西;否则,你会浪费CPU时间无用功。如果你是vsync'd,这应该会自动发生。如果没有,请在那里放一个限速器。你的笔记本电脑用户的圈子会感谢你。 – 2009-11-19 00:18:54

+0

我只是假设读者会知道vsync限制“尽可能快”中的“可能”。我应该更清楚。 – 2009-11-19 01:35:53