我在CAOpenGLLayer中绘制框架,它运行正常!但是当我创建它的第二个实例(在另一个线程中并将其绑定到另一个CALayer)时,第一个实例停止绘制(drawinCGLContext从未被调用过),但setNeedsDisplay正在为每个层定期调用。如果我创建第三个实例,那么第一个和第二个不是绘图,但第三个是好的。我已经测试了setNeedsDisplay 100%被调用而drawinCGLContext没有为“旧”图层调用,也不明白它是如何发生的。
以下是我的图层的创建方式:
MyCAOpenGLLayer* layer = [MyCAOpenGLLayer new];
layer.asynchronous = YES;
layer.autoresizingMask = kCALayerWidthSizable | kCALayerHeightSizable;
layer.needsDisplayOnBoundsChange = YES;
[(CALayer*) wnd->getDrawingPrimitive() addSublayer:layer];
这里是我的drawinCGLContext函数,如果它可以帮助(但问题似乎不存在):http://pastebin.com/5uBRDm4w
当特殊回调函数中的新帧可用时,将调用setNeedsDisplay。