如何在mtkview中创建第二个视图

时间:2016-07-06 16:13:49

标签: macos metal

我正在学习Swift,Metal / MetalKit来创建一个工程应用程序。由于视力不佳,我不使用Interface Builder(我迷失在xcode中)。 在27“iMac上运行OSX 10.11。

我有一个运行的mtkview显示3D图形,但需要在顶部(角落)添加另一个视图以显示视图方向。

我在Linux,gtkmm和mesa 3d中有第二个opengl视图,但我找不到任何关于如何在金属中添加第二个视图的文档。

我尝试在我的程序中添加第二个mtkview,但没有任何反应(我认为它不被认可)。

最好的方法是什么?

  1. 在现有视图的顶部添加第二个mtkview? (如果是,如何)
  2. 将第二个视图渲染为现有视图渲染过程的对象?
  3. 其他一些方法?
  4. 有没有人有任何关于如何做到这一点的信息或示例?

1 个答案:

答案 0 :(得分:0)

这是一个非常简单的答案。 Metal使用所谓的视口来指定应该绘制视图的哪个部分。视图端口外的所有内容都保留原样。这就是你如何使用它:

// Draw the full view here

let topLeft = MTLViewport(originX: 10, 
                          originY: 10, 
                          width: size.width / 3, 
                          height: size.height / 3, 
                          znear: 0, 
                          zfar: 1)

renderEncoder.setViewport(topLeft)

// Draw the top left view here

当然,您不应该总是计算topLeft视图端口,因为它只会在视图大小更改时更改,因此会将其放在mtkView:drawableSizeWillChange:方法中。