gpt4 book ai didi

ios - Metal 着色器文件中除顶点|片段|内核之外的函数的 Synax

转载 作者:可可西里 更新时间:2023-11-01 04:28:46 51 4
gpt4 key购买 nike

我正在将一些基本的 OpenCL 代码移植到 Metal 计算着色器。尝试转换其他辅助函数时很早就陷入困境。例如,在 .metal 文件中包含类似以下函数的内容 Xcode (7.1) 会给我一个“No previous prototype for function”警告

float maxComponent(float4 a) {
return fmax(a.x, fmax(a.y, fmax(a.z, a.w)));
}

执行此操作的“Metal ”方法是什么?

最佳答案

我知道的三种方式:

(我将函数重写为重载,并且对我来说更具可读性。)

实际声明原型(prototype):

float fmax(float4 float4);
float fmax(float4 float4) {
return fmax(
fmax(float4[0], float4[1]),
fmax(float4[2], float4[3])
);
}

将它的范围限定为静态的文件:

static float fmax(float4 float4) {
return fmax(
fmax(float4[0], float4[1]),
fmax(float4[2], float4[3])
);
}

将其包装在匿名命名空间中:

namespace {
float fmax(float4 float4) {
return metal::fmax(
metal::fmax(float4[0], float4[1]),
metal::fmax(float4[2], float4[3])
);
}
}

关于ios - Metal 着色器文件中除顶点|片段|内核之外的函数的 Synax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33978063/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com