2012-03-23 88 views
0

我一直在搞OpenGL最近,我注意到,当我试图调整我的窗口的大小时,窗口消息泵被阻止,所以当我点击菜单栏或调整大小时结果呈现被暂停窗户。Opengl游戏循环多线程

要解决这个问题,我正在研究多线程。

我有以下几点:

_beginthread(RenderEntryPoint, 0, 0); 

while (!done) 
{ 
    PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE); 

    if (msg.message == WM_QUIT) 
    { 
     done = true; 
    } 
    else 
    { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 
} 

void RenderEntryPoint(void *args) 
{ 
    while (1) 
    { 
     //render code 
    } 
} 

然而,我的场景没有被渲染,而且我不知道为什么。

回答

5

您需要在渲染线程中使OpenGL渲染上下文保持当前状态,以确保它在窗口线程中不是最新的。这也意味着您不能通过窗口线程调用任何 OpenGL函数。

+0

啊,谢谢我的理解。 – 2012-03-23 04:54:12