75得票1回答
现实套件 vs 场景套件 vs 金属 - 高质量渲染

我正在开发一款iOS应用程序,我打算在AR中显示逼真/高质量的渲染效果。在尝试这三个选项时,我仍然不确定应该选择哪一个来开发我的应用程序框架:SceneKit、RealityKit和Metal。 我已经了解到SceneKit是建立在Metal之上的,但我不确定是否值得花费时间/精力编写任何自...

39得票4回答
Xcode日志:“启用Metal API验证”

我正在通过Xcode构建macOS应用程序。每次构建时,我都会得到以下日志输出: 启用了Metal API验证 据我所知,我的应用程序没有使用任何Metal功能。我没有使用硬件加速的3D图形、着色器、视频游戏功能或类似的东西。 为什么Xcode会打印Metal API日志输出? ...

31得票1回答
将MTLTexture用作SCNScene的环境贴图

我想将一个MTLTexture对象设置为场景的环境贴图,因为根据文档,这似乎是可能的。我可以使用以下代码将环境贴图设置为UIImage:let roomImage = UIImage(named: "room") scene.lightingEnvironment.contents = roo...

31得票2回答
LiDAR和RealityKit - 为扫描模型捕捉真实世界纹理

任务 我想要捕捉一个真实世界的纹理,并将其应用于通过LiDAR扫描仪产生的重建网格。我认为应该使用投影视图模型矩阵来完成这项任务。纹理必须从固定的视角制作,例如从房间中心。但是,如果我们可以将作为场景中立方体贴图纹理收集到的环境纹理数据应用到重建网格上,那将是一种理想的解决方案。 看看3D ...

31得票2回答
为什么在Metal中禁止从片段着色器向缓冲区写入数据?

如Metal Shading Language Guide所述: 在片段函数中,禁止向缓冲区或纹理写入。 我知道这是事实,但我很好奇为什么会这样。从片段着色器中写入缓冲区非常有用;我知道直接写入缓冲区时硬件端可能更复杂,因为不总是能预知特定线程的内存写入的最终位置,而原始缓冲区写入就不总是...

28得票2回答
内存写入性能 - GPU CPU 共享内存

我正在根据memkite提供的共享GPU/CPU文档,使用posix_memalign分配输入和输出MTLBuffer。顺便说一句:使用最新的API比折腾posix_memalign更容易。let metalBuffer = self.metalDevice.newBufferWithLeng...

22得票1回答
SceneKit Cocoa 快照失败断言

我正在开发一款Swift/Cocoa/Xcode应用程序。 这个应用程序包含一个SceneKit视图。渲染API设置为默认值(我认为这是Metal)。 如果在这个SceneKit视图对象上运行snapshot(),我会收到以下错误消息。 我想做的是从相机捕获场景的UIImage。Textu...

20得票5回答
QuartzCore/CAMetalLayer.h文件未找到。

我试图检查iOS的新Metal API的新示例。当我下载代码并在XCode 6 Beta中打开它时,我收到以下错误消息:QuartzCore/CAMetalLayer.h file not found 我需要添加其他文件吗?还是我遗漏了其他东西?Metal API应该在OSX 10.9.3中可...

20得票4回答
持有CVImageBuffer中的MTLTexture会导致卡顿问题。

我使用CVMetalTextureCacheCreateTextureFromImage从相机和播放器的CVImageBuffer中创建一个MTLTexture,然后使用CVMetalTextureGetTexture获取MTLTexture。但是,在使用Metal渲染纹理时,偶尔会看到视频帧...

20得票2回答
实时捕获Metal MTKView作为电影?

什么是从MTKView捕获帧的最有效方法?如果可能的话,我想实时保存帧到.mov文件中。是否可以将其渲染到AVPlayer框架或类似的东西中? 目前使用以下代码进行绘制(基于@warrenm PerformanceShaders project):func draw(in view: MTK...