8得票1回答
在主线程上绘制MTKView或CAMetalLayer是否是必须的?

众所周知,在更新AppKit或UIKit用户界面时,必须在主线程上进行。当涉及到呈现drawable时,Metal是否有相同的要求? 在我玩耍的一个层主持的NSView中,我注意到我可以从不是main_queue的dispatch_queue中调用[CAMetalLayer nextDraw...

7得票1回答
GLSL - `out`在参数中的含义

我正在学习GLSL和CG,现在遇到了这段代码: float trace( vec3 origin, vec3 direction, out vec3 p ) //<-- What is "out"? { float totalDistanceTraveled = 0.0; ...

9得票1回答
片段着色器函数中的float4和half4主要有什么区别?

我尝试设置渲染管线和MTKView颜色附着像素格式为MTLPixelFormatRGBA16Float。 然而,它似乎与MTLPixelFormatBGRA8Unorm_sRGB相同。 我只想使渲染颜色范围更高(HDR)。 片段函数的返回类型重要吗? 在metal中应该设置什么来实现高...

9得票2回答
如何释放MTLBuffer和MTLTexture的内存空间

我知道如何创建MTLBuffer和MTLTexture,但是当这些资源不再需要时,如何释放GPU内存呢?

7得票1回答
如何将SCNRenderer与现有的MTLCommandBuffer结合起来?

我将Vuforia SDK图像目标跟踪特性成功地整合到了iOS项目中,通过将SDK提供的OpenGL上下文(EAGLContext)与SceneKit的SCNRenderer实例相结合。这使我能够利用SceneKit的3D API的简单性,同时又从Vuforia的高精度图像检测中受益。现在,我...

7得票2回答
我能在Metal上使用GPU运行算法吗?

我正在使用最小编辑距离算法来确定两个字符串之间的相似度。我已经实现了该算法在CPU上运行,当你有数百个字符串时它运行良好,但是当你比较成千上万次字符串时,它就会变得很慢。因此,我认为将其转移到GPU上可能会很有用,因为GPU可以同时执行多个比较。 这是否可能?我所找到的Metal资源主要用于...

10得票2回答
手动编译Metal着色器

我有兴趣远离Xcode,在一个混合语言应用程序的项目中手动编译Metal着色器。 我不知道怎么做。Xcode隐藏了着色器编译的细节以及在运行时将其加载到应用程序中(只需调用device.newDefaultLibrary())。这是否可行,还是我必须使用运行时着色器编译来实现我的目的?

7得票2回答
测试托管缓冲区的最佳实践?

在搭载离散显卡的 Mac 上,应使用“Managed Buffers”而不是“Shared Buffers”,但需要满足额外的要求,使用 [MTLBuffer:didModifyRange:] 维护同步。 然而,在 Apple Silicon 上,如果我通过假装 [MTLDevice has...

18得票1回答
将UInt8组件类型的纹理传递给Metal计算着色器

我有一张程序生成的图像,我想将此图像作为纹理发送给计算着色器。我生成这张图片的方式是分别计算每个RGBA颜色通道的UInt8值,并将其组合成UInt32并存储在图像的缓冲区中。我使用以下代码进行此操作:guard let cgContext = CGContext(data: nil, ...

8得票1回答
Metal makeComputeCommandEncoder断言失败

我正在尝试设置并执行计算内核,并将其输出提交给MTKView以进行绘制。但是我遇到了以下崩溃: -[MTLDebugCommandBuffer computeCommandEncoder]:889: failed assertion `encoding in progress' 下面的...