7

関数を GLSL の別の関数の引数として使用する方法を探しています。通常の C では、関数ポインターを関数の引数として渡すことでシミュレートできます。また、他の言語 (HLSL など) では、高階関数などの高レベルの構造を処理する方法を提供したり、HLSL 構造を巧みに使用してそれらをシミュレートしたりできるようになりました。残念ながら、今のところ GLSL で立ち往生しており、高階関数をシミュレートする方法が見つかりません。現在の (4.2) GLSL では本当に不可能ですか? または、巧妙なトリックがありませんか?

私が達成しようとしているものの一般的な例:

int f(someType f2, int i) {
    return f2(i);
}
4

2 に答える 2

5

関数を GLSL の別の関数の引数として使用する方法を探しています。

簡単な答え: できません。

GLSL で得られるこの種の機能に最も近いのは、シェーダー サブルーチンです。そしてそれは、シェーダー自体ではなく、外部 OpenGL API のみが使用するサブルーチンを選択できるようにします。

したがって、switch/caseステートメントを実行して、それを終わらせてください。

于 2012-02-29T17:36:20.680 に答える