2009-11-18 21 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