4

考虑以下 GLSL 函数:

float Pow3 (const in float f) {
    return f * f * f;
}

float Pow4 (const in float f) {
    return f * f * f * f;
}

float Pow5 (const in float f) {
    return f * f * f * f * f;
}

... 等等。有没有办法#define一个 GLSL 宏,它可以在编译时生成n个f乘法,当然不使用内置的 GLSL pow()函数?

4

1 回答 1

10

GLSL 预处理器“等于”标准 C 预处理器。实际上,您可以使用以下预处理器定义来达到您想要的效果:

#define POW(a, b) Pow ## b ## (a)

但请注意,因为连接运算符 ( ##) 仅从 GLSL 1.30 开始可用。实际上,使用以前的 GLSL 版本,这个宏会产生编译器错误。

仍然想知道为什么你不使用该pow功能...

于 2012-05-06T06:57:58.520 回答