游戏循环设计

我想创建一个简单的游戏循环。我正在考虑这两个版本:

v.1:

while (continueRunning) {

        PeekMessage(&msg, 0, 0, 0, PM_REMOVE);

        TranslateMessage(&msg);
        DispatchMessage(&msg);

        if (WM_QUIT == msg.message) {
            continueRunning = false;
        }

        // run the game logic

    }

和 v.2:

while(continueRunning)
{
    // peek for messages
    while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);

        if (msg.message == WM_QUIT)
            continueRunning = false;
    }

    // run the game logic
}

什么是更好的解决方案?是否需要有PeekMessagewhile循环像在第二个例子?

回答

您的第一个版本缺少if大约PeekMessage. 无论如何,这将处理ONE在游戏周期消息(〜60每秒?)。那太慢了。

您应该在运行游戏逻辑之前处理所有消息,类似于您的v.2.


以上是游戏循环设计的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>