ios – 更新Metal中MTLBuffer的内容

ios – 更新Metal中MTLBuffer的内容,第1张

概述我需要帮助来替换MTLBuffer的内容而不创建新的内容.两种情况下的内容都是Float Arrays. let vector:[Float] = [0,1,2,3,4,5,6,7,8,9] let byteLength = arr1.count*MemoryLayout<Float>.sizelet buffer = metalDevice.makeBuffer(bytes: &vect 我需要帮助来替换MTLBuffer的内容而不创建新的内容.两种情况下的内容都是float Arrays.

let vector:[float] = [0,1,2,3,4,5,6,7,8,9]   let byteLength = arr1.count*MemoryLayout<float>.sizelet buffer = MetalDevice.makeBuffer(bytes: &vector,length: byteLength,options: MTLResourceOptions())let vector2:[float] = [10,20,30,40,50,60,70,80,90]

我理解buffer.contents()为我们提供了一个UnsafeMutableRawPointer.我想从vector2创建一个新的UnsafeMutableRawPointer并替换buffer的内容.

提前致谢!

解决方法 您可以使用memcpy执行此 *** 作,但稍微SwiftIEr的方法是:

buffer.contents().copyBytes(from: vector2,count: vector2.count * MemoryLayout<float>.strIDe)

通常,在计算数组的长度(以字节为单位)时,首选strIDe over size.如果类型不是原始类型并且有任何填充,则大小不会考虑到这一点,并且您将复制比预期更少的字节.

总结

以上是内存溢出为你收集整理的ios – 更新Metal中MTLBuffer的内容全部内容,希望文章能够帮你解决ios – 更新Metal中MTLBuffer的内容所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存