【问题标题】:Unknown type name array未知类型名称数组
【发布时间】:2017-08-14 05:56:50
【问题描述】:

我在 macOS 10.12 上有一个 metal 2 着色器,我试图将一个 int 数组传递给它,但 XCode 给了我一个编译时错误Unknown type name 'array'。这是我正在使用的代码:

kernel void computeMandelbrot(texture2d<float, access::write> output [[texture(0)]], constant int &maxIterations [[buffer(1)]], const array<int, 10> &hist [[buffer(2)]], uint2 gid [[thread_position_in_grid]]) {
// Compute Mandelbrot
}

我也尝试过使用关键字constant 而不是const,但我也收到了Parameter may not be qualified with an address space 的错误。我读过 macOS 上的金属不支持纹理数组,但我不确定这是否适用于其他类型的数组。任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: macos graphics metal


    【解决方案1】:

    一些事情:

    • Metal 2 在 macOS 10.12 中不可用。这是 10.13 的新功能。

    • array 仅可用于纹理和采样器。

    • array 在 macOS

    • 您可以将参数声明为constant int *hist [[buffer(2)]]。它没有明确的长度,只是限制您引用的元素。

    编辑:我错了 array 只能用于纹理和采样器。规范建议通过在标题为“纹理和采样器数组”的部分中介绍它并仅说明其使用方式,但模板类本身似乎一般有用。

    但是,在 Metal 2 之前,它在 macOS 上不可用。换句话说,它仅适用于 macOS 10.13+。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 2014-11-19
      • 2018-10-27
      • 2016-09-16
      • 2012-04-03
      • 2017-01-09
      相关资源
      最近更新 更多