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;
}

... 等々。もちろん、組み込みのGLSL pow()関数を使用せずに、コンパイル時にn回の乗算を生成できるGLSLマクロを#defineする方法はありますか?

4

1 に答える 1

10

GLSL プリプロセッサは、標準の C プリプロセッサと「同等」です。実際、次のプリプロセッサ定義を使用して、必要なものに到達できます。

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

ただし、連結演算子 ( ##) は GLSL 1.30 以降でのみ使用できるため、注意してください。実際、以前の GLSL バージョンを使用すると、このマクロはコンパイラ エラーを生成します。

なぜこのpow機能を使用しないのか、まだ疑問に思っています...

于 2012-05-06T06:57:58.520 に答える