OpenGL中的CGLFlushDrawable不等待OS X 10.13和10.14上的监视器刷新

时间:2019-05-01 22:37:35

标签: macos

我正在使用DoubleBuffering并将交换间隔设置为1,因此flushBuffers应该阻塞openGL代码,直到交换完成。

因此,我在单独的线程上进行了此设置:

for(i=0 i< numFrames i++) {

// some drawing stuff


[[NSOpenGLContext currentContext] flushBuffer];

glFinish();

// get the time

}

在OS X的早期版本(以及使用不同的硬件)中,这种方法可以正常工作:绝大多数时间我的时间间隔与一帧相对应,偶尔有两个时间间隔。

但是现在(在新硬件以及10.13和10.14上),此操作失败。我有很多非常低的间隔(以毫秒为单位),有些间隔很大,但是在整数帧周围没有明显的间隔聚类。

顺便说一句,我这样做是因为以规则,可靠的方式交付帧至关重要,如果不是,则我想了解一下。

我真的很茫然,我认为唯一的可能性是OS X和opengl驱动程序发生了某些变化,但是Apple很难在OS版本上回退,所以我想我会在我走这条路之前,一些建议。

有什么想法吗?

0 个答案:

没有答案