GLSL宏扩展可以这样做吗?

时间:2012-05-06 02:41:22

标签: opengl macros glsl shader fragment-shader

考虑以下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 -by -self,而不是使用内置的GLSL pow()功能当然?

1 个答案:

答案 0 :(得分:7)

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

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

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

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