为什么应该避免使用OpenGL语句中的布尔条件?

时间:2013-08-14 11:00:03

标签: opengl-es opengl-es-2.0

我是OpenGL的新手,我有一个问题,必须回答我的领导:“为什么在if和if-else条件语句中应该避免像上面例子中使用的bool表达式”。我必须明天回答,但我没有任何线索,任何人都可以帮助我, 谢谢! P / s:此代码在这里:

void main ()
{
    vec4  color = texture2D ( tex , v_uv);

    if (color.r < 0.25)
        gl_FragColor =  texture2D (tex1 ,  v _uv);

    else
        gl_ FragColor =  texture2D ( tex2, v _uv);
}

2 个答案:

答案 0 :(得分:1)

你没有提供这个例子,但我只是做出假设,并说GPU上的分支可能是一件坏事......

不同的GPU支持不同的分支样式,因此影响取决于代码和目标的支持(SIMD,MIMD,条件代码分支等)。

根据分支的类型(即:您正在检查的条件以及生成的代码是什么),网格中的其他核心可能最终等到最后一个核心,如果分支和沙沙代码。因此,如果你有一个核心因为条件得到满足而不得不做一些复杂的事情,那么所有核心都需要等待所述核心。这可能真的会增加并降低你的性能......但这取决于目标和代码!

答案 1 :(得分:0)