2014-05-03 60 views

回答

1

通过扫描该页面,我相信你可以在片段着色器中完成所有这些工作。您可以绑定多个纹理,在着色器中对其进行全部采样,并将结果合并到您的心中。

它看起来类似于OpenGL在固定功能流水线中使用的功能。我旧版本的红皮书(OpenGL编程指南)有关于“多纹理”和“纹理合并器功能”的章节。如果您使用兼容性配置文件,这仍然可用。但恕我直言,这是一个很好的例子,它将某些类型的功能压缩到固定管道中看起来非常麻烦,而在着色器中做同样的事情则更容易和更灵活。

+0

是的,它可能与glsl着色器,但除非我使用几个开关语句和着色器内的循环(这不是很有效),我最终会有1000个着色器。为了获得相同的灵活性。 – user240713

+2

1000个着色器,因为你想以多种不同的方式组合纹理?如果你用固定功能做同样的事情,你也可能会得到很多着色器。你只是看不到它们。我不认为有人已经制造出可以长时间直接实现固定管道的图形硬件。当你使用固定管道时,你只需将它留给驱动程序来生成着色器。 –

+0

我想有可能是另一种解决方案,例如有某种混合函数'mix(srcColor,dstColor,alpha)+ mix(srcColor,dstColor,alpha)'来模拟glBlendFunc。哪些只会是浮点乘法而不是开关语句? – user240713