我想使用仅使用glsl的可编程管道(没有固定管道)来渲染卷(VERSION combined with programmable pipeline and fixed pipeline)
。为了实现这一点,我需要多遍渲染器,这意味着按顺序渲染具有不同着色器的不同场景。
我想到了three methods
:
我想知道何时应该使用第一种方法? 2ed方法?等有经验的开发人员可以帮忙吗?
答案 0 :(得分:1)
许多问题可以在没有多次通过的情况下解决。只是尝试在没有它们的情况下制作技术。 如果没有其他工作可以使用方法3。
我对此的看法:
方法3的示例:
uniform int currentPass;
/* OTHER UNIFORMS */
void main()
{
if(currentPass == 1)
{
/* DO SOMETHING */
}
else if(currentPass == 2)
{
/* DO SOMETHING */
}
else if(...) { ... }
}
在我看来,最好的方法是只使用很少的着色器(可能是一个材质着色器,一个后处理着色器等),所以你的方法3几乎是完美的。
有没有想过超级明星?他们是“喜欢”你的方法3.谷歌它:) 我还推荐这个question。
Also be careful, the if-statements may weaken your performance very much.