【问题标题】:Vector SIMD types in SwiftSwift 中的向量 SIMD 类型
【发布时间】:2026-02-12 04:35:01
【问题描述】:

我想知道是否可以在 Swift 中使用 <simd/simd.h> 中定义的 SIMD 类型(例如 vector_float3)。我似乎想不出办法。

谢谢!

【问题讨论】:

  • 虽然它不能完全替代真正的 SIMD 库,但 GLKit 具有可用作通用向量和矩阵的通用数学例程。

标签: vector types swift simd


【解决方案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 等。

    【讨论】: