【发布时间】:2026-02-12 04:35:01
【问题描述】:
我想知道是否可以在 Swift 中使用 <simd/simd.h> 中定义的 SIMD 类型(例如 vector_float3)。我似乎想不出办法。
谢谢!
【问题讨论】:
-
虽然它不能完全替代真正的 SIMD 库,但 GLKit 具有可用作通用向量和矩阵的通用数学例程。
我想知道是否可以在 Swift 中使用 <simd/simd.h> 中定义的 SIMD 类型(例如 vector_float3)。我似乎想不出办法。
谢谢!
【问题讨论】:
请注意这个问题,以便它是最新的 - SIMD 向量已在 WWDC '15 上为 Swift 2.0 宣布:
SIMD 支持:在 Swift 中导入和使用 Clang 扩展向量,支持许多图形和其他 可在 Swift 中使用的低级数字 API(例如 simd.h)。
所以从现在开始的答案——是的,有可能。
【讨论】:
目前看来不行。不过,他们可能会在以后的版本中添加它。 https://groups.google.com/forum/#!topic/swift-language/slwe62yKsWo
【讨论】:
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)
【讨论】:
在这里查看我的仓库:https://github.com/noxytrux/SwiftGeom 我为此构建了整个库。所以你现在可以在你的 swift 项目中使用 vec2、vec3 等。
【讨论】: