我试图在ARFrame
上对来自MTKView
的帧进行blit。出于各种原因,我试图避免使用着色器。我现在做的基本上是这样的:
在drawInMTKView
方法中:
// When the session:didUpdateFrame callback is called I create a
// CIImage from the CVPixelBufferRef inside ARFrame provided and
// set the property in the view
- (void)drawInMTKView:(nonnull MTKView *)view {
if (!view.currentDrawable || !view.currentRenderPassDescriptor) {
return;
}
id<MTLCommandBuffer> commandBuffer = [commandQueue commandBuffer];
[ciContext render:ciImage
toMTLTexture:mtkView.currentDrawable.texture
commandBuffer:commandBuffer bounds:CGRectMake(0, 0, view.drawableSize.width, view.drawableSize.height) colorSpace:colorSpace];
[commandBuffer presentDrawable:mtkView.currentDrawable];
[commandBuffer commit];
}
问题是我无法覆盖整个视图并且无法正确旋转。它在视图旋转时也会崩溃,可能是因为它试图在缓冲区边界外写入。我通过给出一个100x100矩形作为render:toMTLTexture
方法的绑定来测试。
如果有人能指导我如何正确渲染,我会很高兴。提前谢谢。