挂在[NSOpenGLContext flushBuffer]

时间:2017-12-01 02:47:00

标签: nsopenglview

我有两个名为myView1和myView2的NSOpenGLView。 myView2是myView1的子视图。然后我使用 CVDisplayLinkCreateWithCGDisplay 为主显示创建显示链接。 myView1和myView2都将使用OpenGL在主线程中绘制一些东西(即在 drawRect 函数中)。在显示链接回调中,我还将使用OpenGL为myView1绘制一些内容。

绘图代码类似于

[self.openGLContext makeCurrentContext];
[self.openGLContext lock];

//draw something ...

[self.openGLContext flushBuffer];
[self.openGLContext unlock];

此刻一切都运作良好。但是,如果我为myView1和myView2添加以下代码,它很容易就会陷入困境。

[self setWantsLayer:YES];

调用堆栈位于:enter image description here

似乎主线程和Display Link回调都锁定在[NSOpenGLContext flushBuffer]中。 有谁知道如何解决这个问题?

0 个答案:

没有答案