我最近一直在搞乱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
}
}
然而,我的场景没有渲染,我不知道为什么。
答案 0 :(得分:5)
您需要在渲染线程中使OpenGL渲染上下文变为当前,和确保它在窗口线程中不是最新的。这也意味着您无法从窗口线程中调用任何 OpenGL函数。