【发布时间】:2013-05-22 08:21:40
【问题描述】:
有没有办法通过对 GLSL 的某种布尔检查只执行一次函数?还是我错过了一些重要的东西?下面的代码似乎没有帮助。
bool once = false;
DoOnce()
{
for (int i = 0; i < someConst; i++)
{
//do some things...
}
once = true;
}
void main()
{
if ( !once )
{
DoOnce();
}
//do other things
}
或者我必须为这种行为使用计算着色器吗?
【问题讨论】:
-
“仅一次”是什么意思? 将只执行一次。每次调用着色器。您是否正在尝试做一些着色器调用相互通信的事情?
-
如果你有原子操作,你可以让它只执行一次(总共,而不是每次调用),但你不太可能真的想要这样做。对于只执行一次的事情,在 CPU 上执行可能更有效。使用 GLSL 的全部意义在于以大规模并行运行多次。
标签: opengl glsl shader nvidia ati