【发布时间】:2014-10-09 08:01:19
【问题描述】:
我正在尝试在 CWnd 窗口中以 60 fps 的速度制作一些 opengl 1.0 动画。我创建了一个 CWnd 的子类:
类 COpenGLControl:公共 CWnd { ... }
我发现如果我使用内置计时器“setTimer()”并将其设置为每 1000/60 毫秒触发一次,所有 opengl 命令都能够正确呈现。但是,如果我使用单独的线程实现自己的计时器,则不会绘制任何内容。我得到的只是黑屏。
有没有办法从不同的线程发出 opengl 命令?
【问题讨论】:
-
感谢您的回复。读完帖子后,似乎我在做的事情有点不同。我不是想多线程我的渲染器。我只想在 CWnd 线程以外的单个线程中进行所有 opengl 调用,并且是跨平台的。这就是为什么我要自己做计时器
-
也许错误代码可能有助于调查。上下文必须绑定在您从中调用命令的线程中。
-
如何获取错误码?我在 OnCreate() 函数中创建了上下文,并且 GL 调用是从我的计时器线程进行的。也许这就是问题所在。如果我也在计时器线程中创建上下文会起作用吗?
-
GetLastError 将给出错误代码。 @derhass 给了你一个正确的答案。
标签: multithreading opengl mfc