我在由窗口控制器管理的窗口中有一个MTKView。当我第一次实例化窗口控制器和窗口时,MTKView调用我的委托的两次调用,并且以首选速率调用drawInMTKView:
- (void)drawInMTKView:(nonnull MTKView *)view
- (void)mtkView:(nonnull MTKView *)view drawableSizeWillChange:(CGSize)size
如果关闭窗口(不释放窗口,则只是隐藏),当我重新打开窗口时,在调整MTKView大小时仍会调用drawableSizeWillChange调用,但不再调用drawInMTKView。 MTKView以其自身的显示链接在其默认模式下运行。由于未调用drawInMTKView,因此可以相信MTKView中的私有displayLink变量有问题。
我正在OSX Mojave(最近的2017年MacBook Pro)上运行Xcode 9.4.1
答案 0 :(得分:1)
我创建了自己的CVDisplayLink回调,并且没有使用MTKView提供的回调来解决MTKView可能出现的问题。
答案 1 :(得分:0)
我遇到了同样的问题,我通过从其超级视图中删除MTKView来解决了这个问题。并在显示窗口时放回去。
- (BOOL)windowShouldClose:(NSWindow *)sender
{
[_metalPreview removeFromSuperview];
return YES;
}
那样,您无需创建自定义CVDisplayLink。