为什么人们倾向于混合已弃用的固定功能管道功能,如矩阵堆栈,gluPerspective(),glMatrixMode()以及何时手动完成并将其作为制服推入GLSL。
这种方法有什么好处吗?
答案 0 :(得分:4)
在用户理智方面,有合理的理由这样做。固定功能矩阵(以及GLSL中跟踪的其他固定功能状态)是全局状态,在所有制服中共享。如果要更改每个着色器中的投影矩阵,只需在一个位置更改它即可。
在没有固定功能的GLSL中执行此操作需要使用统一缓冲区。或者,或者您必须构建一些系统,将状态信息存储到您要使用的每个着色器。后者是完全可行的,但是巨大的麻烦。前者相对较新,仅在2009年推出,和需要DX10级硬件。
使用固定功能和GLSL状态跟踪要简单得多。
答案 1 :(得分:1)
就我所知,没有任何好处(除非您考虑不必重新编写功能的好处)。
很可能只是懒惰,或者缺乏替代方法的知识。
答案 2 :(得分:0)
基本上是因为这些应用程序需要着色器才能运行,但程序员太懒/不足以重新实现那些已经可以使用OpenGL兼容性配置文件的功能。
难以替换的显着特征是线宽(大于1),线条点画和单独的前后多边形模式。
答案 3 :(得分:0)
大多数教程教授弃用的OpenGL,所以也许人们不会更清楚。
答案 4 :(得分:0)
好处是您使用的是众所周知,经过全面测试和可靠的代码。如果它适用于MS Windows或Linux专有驱动程序,由构建GPU的人员编写,因此可以假设知道如何使其快速实现。
团队项目的另一个好处是只有一种方法可以做到这一点。没有关于你是否应该编写自己的C ++矩阵类以及应该调用什么以及哪些运算符要重载以及内部实现是否应该是1D或2D文档的争论......