【发布时间】:2012-03-19 00:28:47
【问题描述】:
我正在寻找一种将函数用作 GLSL 中另一个函数的参数的方法。在常规 C 中,可以通过将函数指针作为函数参数传递来模拟它。似乎其他语言(如 HLSL)现在也提供了处理高级构造(如高阶函数)的方法,或者可以使用 clever use of HLSL structures 模拟它们。不幸的是,我现在被 GLSL 困住了,我找不到任何方法来模拟高阶函数。当前(4.2)GLSL真的不可能吗?还是我错过了一些巧妙的技巧?
我正在努力实现的常见示例:
int f(someType f2, int i) {
return f2(i);
}
【问题讨论】:
-
而您需要在着色器中使用这种(可能成本高昂)间接来实现...?
-
除了这种抽象会很好用之外,我遇到的实际问题如下:我有一个函数 f 可以切换参数 p(比如说,一个 int),并调用另一个函数 f2,其性质取决于切换值。能够将 f2 作为参数传递将允许我直接调用而无需切换,因为在我的应用程序的上下文中,我确切地知道在调用 f 本身时要在 f 中调用什么函数。我真的不知道这是否可能,也不知道要花多少钱,但我认为进行 100 箱切换可能会更糟。
标签: struct pass-by-reference glsl higher-order-functions