我正在构建一个Cocoa/OpenGL应用程序,每次需要控制每个视频帧并写入数字IO设备的时间段约为2秒。如果在进行OpenGL调用后我释放主线程(例如,如果我将OpenGL调用放在定时器fire-method中,并设置间隔为0.01秒),则每次调用
但是,如果我像在一个长达2秒的while循环中保持主线程繁忙一样,OpenGL调用将不起作用(令人惊讶的是,第一次调用
glFinish()
时都会刷新OpenGL视图。但是,如果我像在一个长达2秒的while循环中保持主线程繁忙一样,OpenGL调用将不起作用(令人惊讶的是,第一次调用
glFinish()
将起作用,但其余部分将不起作用)。
文档说glFinish
应该阻塞线程直到gl命令被执行。
请问有谁能帮助我理解这里发生了什么或提供解决此问题的方法?
为了明确起见,我想连续呈现200帧而不错过任何一帧,并通过写入数字IO端口标记每个帧的刷新(我对此没有问题),所有这些都在Snow Leopard上完成。
glFinish
和glFlush
都替换成了glFlushRenderAPPLE
和glFinishRenderAPPLE
,并在最后加上了一个glSwapAPPLE
,结果完美无缺!谢谢啊。 - undefined