Swift 3 / Xcode 9. MTLBuffer 'didModifyRange' недоступен
Я пытаюсь сообщить MTLBuffer, что диапазон изменился, но компилятор не позволит мне сделать это:
vertexBuffer?.didModifyRange(NSMakeRange(0,MemoryLayout<MetalVertex>.stride*nbVerts))
он просто говорит: "didModifyRange" недоступен, почему это так?
Спасибо
2 ответа
В Свифте didModifyRange
занимает Range<Int>
не NSRange
, Так что вместо использования NSMakeRange
, вы можете построить один, используя ..<
оператор.
vertexBuffer?.didModifyRange(0 ..< MemoryLayout<MetalVertex>.stride * nbVerts)
Вы ориентируетесь на iOS? Согласно документации Apple ,didModifyRange
поддерживается только в macOS и Catalyst. Это также применимо только к буферам, созданным с помощьюMTLStorageModeManaged
, который имеет те же ограничения.
Если вы ориентируетесь на несколько платформ, вам нужно будет сделать обе условными, см.: