Swift 中的向量 SIMD 类型
Posted
技术标签:
【中文标题】Swift 中的向量 SIMD 类型【英文标题】:Vector SIMD types in Swift 【发布时间】:2014-10-31 23:33:43 【问题描述】:我想知道是否可以在 Swift 中使用 <simd/simd.h>
中定义的 SIMD 类型(例如 vector_float3
)。我似乎想不出办法。
谢谢!
【问题讨论】:
虽然它不能完全替代真正的 SIMD 库,但 GLKit 具有可用作通用向量和矩阵的通用数学例程。 【参考方案1】:请注意这个问题,以便它是最新的 - SIMD 向量已在 WWDC '15 上为 Swift 2.0 宣布:
SIMD 支持:在 Swift 中导入和使用 Clang 扩展向量,支持许多图形和其他 可在 Swift 中使用的低级数字 API(例如 simd.h)。
所以从现在开始的答案——是的,有可能。
【讨论】:
知道您是如何导入它的 - 除了您在上面复制的那个摘录之外,我在网上找不到任何东西。据我所知,它不是自动导入的。谢谢。 只需导入 simd.h。没有很多可用的外部文档,但标题有足够的信息来查看可用的内容。【参考方案2】:目前看来不行。不过,他们可能会在以后的版本中添加它。 https://groups.google.com/forum/#!topic/swift-language/slwe62yKsWo
【讨论】:
如果对您有用,请报告错误以请求此功能!【参考方案3】:Swift 5 原生支持SIMD vector types。以下 Playground 示例代码显示了使用 SIMD4
的逐元素乘法:
let vector1 = SIMD4(1, 2, 3, 4)
let vector2: SIMD4 = [2, 3, 4, 5]
let vector3 = vector1 &* vector2
print(vector3) // prints: SIMD4<Int>(2, 6, 12, 20)
来源:Swift Evolution - SIMD Vectors proposal
【讨论】:
【参考方案4】:在这里查看我的仓库:https://github.com/noxytrux/SwiftGeom 我为此构建了整个库。所以你现在可以在你的 swift 项目中使用 vec2、vec3 等。
【讨论】:
以上是关于Swift 中的向量 SIMD 类型的主要内容,如果未能解决你的问题,请参考以下文章
将 simd_quatf 转换为 SCNQuaternion