我试图移动基于NSView的应用程序,开始使用GPU和Metal。所以,我加了一个
CAMetalLayer
像这样使用:
[self setWantsLayer:YES];
self.layerContentsRedrawPolicy = NSViewLayerContentsRedrawDuringViewResize;
然后制作背衬层,如下所示:
- (CALayer*)makeBackingLayer
{
id <MTLDevice> device = MTLCreateSystemDefaultDevice();
CAMetalLayer *backingLayer = [CAMetalLayer layer];
backingLayer.opaque = YES;
backingLayer.device = device;
backingLayer.pixelFormat = MTLPixelFormatBGRA8Unorm;
backingLayer.framebufferOnly = YES;
[backingLayer setDelegate:self];
return backingLayer;
}
这些代码都是我自己写的
CustomNSView
类继承自
CustomParentNSView
使用
NSGraphicsContext
在屏幕上画一些东西。既然我要搬家了
CustomNSView
当我尝试调用以下命令时,请转到层备份的NSView:
[NSGraphicsContext currentContext]
这将返回NULL。
-
对于层备份的NSView,该值是否应为空?
我还试着调查上一次实现中的位置
NSGraphicsContext
结果是,我的应用程序没有设置任何地方。
NSView
是它自己设定的
NSGraphicsContext
从地球内部的某个地方
displayIfNeeded
,打电话之前
drawRect
.
-
我是否仍然可以使用NSGraphicsContext渲染到NSView,即使它是层备份的?
谢谢