这是我当前在普通窗口中的游戏循环:
while(running)
{
while( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) )
{
if( msg.message == WM_QUIT )
{
running = false;
}
TranslateMessage( &msg );
DrawGame(&game);
DispatchMessage( &msg );
}
UpdateGame(&game);
InvalidateRect(hwnd, NULL, 1);
//Sleep(100);
}
...但我真的应该将 DrawGame 放在 Translate 和 DispatchMessage 之间吗?如果我将 DrawGame 放在 UpdateGame 上方/下方,则不会绘制任何内容。
过了一会儿,如果我画一个简单的矩形,它们就会开始相互重叠。它运行了大约一分钟,绘制了一个矩形网格(由于:您设置的窗口大小不是正确的窗口大小而导致位置不正确。过了一会儿它绘制了另一个网格,有时它完全搞砸了窗口似乎已经崩溃,我必须在 Visual Studio 中按下“停止”按钮。
那么,我究竟应该在哪里放置一个游戏循环,以及我如何知道何时绘制游戏?我主要需要绘制矩形,尽管这也不是很好。