Swift 3 / Xcode 9. MTLBuffer 'didModifyRange'不可用

axr492tv  于 2023-08-07  发布在  Swift
关注(0)|答案(2)|浏览(96)

我试图告诉MTLBuffer范围已更改,但编译器不允许我这样做:

vertexBuffer?.didModifyRange(NSMakeRange(0,MemoryLayout<MetalVertex>.stride*nbVerts))

字符串
它只是说:“didModifyRange”不可用,为什么?
谢了

goqiplq2

goqiplq21#

在Swift中,didModifyRange需要一个Range<Int>,而不是NSRange。因此,您可以使用..<运算符来构造一个,而不是使用NSMakeRange

vertexBuffer?.didModifyRange(0 ..< MemoryLayout<MetalVertex>.stride * nbVerts)

字符串

sdnqo3pr

sdnqo3pr2#

您的目标用户是iOS吗?根据Apple DocumentationdidModifyRange仅在macOS和Catalyst上受支持。它也仅适用于使用MTLStorageModeManaged创建的缓冲区,这些缓冲区具有相同的约束。
如果您的目标是多个平台,则需要将两者都设置为条件,请参阅:
Swift availability check for macCatalyst

相关问题