Opengl游戏循环多线程
Opengl Game Loop Multithreading
我最近一直在摆弄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
}
}
但是,我的场景没有被渲染,我不知道为什么。
您需要使OpenGL渲染上下文在渲染线程中为最新,和确保它在窗口线程中不是最新的。这也意味着您不能从窗口线程调用任何OpenGL函数。
相关文章:
- 使用 shared_ptr 在中断时结束多线程循环
- 在 While 循环中重用对象的多线程
- C++ 中的循环的多线程
- 简单的C++循环无法从多线程中受益
- 可能以有效的方式在模拟的循环中进行多线程
- for 循环内的多线程 - OpenMP
- 构建和同步多线程游戏循环
- 4D阵列C++的多线程循环
- 多线程循环的效率
- 在Qt中使用多线程时的事件循环和信号槽处理
- 为什么具有多线程的for循环的性能不如单线程
- 无限循环多线程
- 高效的循环多线程
- 当运行long-for循环的小部件(QDialog)在没有多线程的情况下关闭时,我如何停止它
- Opengl游戏循环多线程
- 循环可以在多线程C++程序中执行多少次
- 多线程c++程序加速一个求和循环
- 是否有任何方法允许多线程程序与这样的循环
- 在多线程循环中调用函数
- c++多线程循环