Opengl游戏循环多线程

时间:2012-03-23 03:34:10

标签: c++ multithreading opengl

我最近一直在搞乱OpenGL,我注意到每当我试图调整窗口大小时,Windows消息泵都会阻塞,因此每当我点击菜单栏或调整窗口大小时,渲染就会停止。< / p>

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

我有以下内容:

_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
    }
}

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

1 个答案:

答案 0 :(得分:5)

您需要在渲染线程中使OpenGL渲染上下文变为当前,确保它在窗口线程中不是最新的。这也意味着您无法从窗口线程中调用任何 OpenGL函数。

相关问题