我听说将在OpenGL版本中删除GL_QUADS
> 3.0,为什么?我的旧程序将来不会有用吗?我已进行基准测试,GL_TRIANGLES
或GL_QUADS
在渲染速度方面没有差异(甚至可能GL_QUADS
更快)。那么重点是什么?
答案 0 :(得分:82)
关键是你的GPU呈现三角形,而不是四边形。从两个三角形构造一个矩形非常简单,因此API实际上不需要具有本地渲染四边形的能力。 OpenGL正在经历一个重大的修剪过程,削减了许多15年前有意义的功能,但不再与GPU的工作方式相匹配,或者GPU如何进入工作。我相信,固定功能管道也已从最新版本中消失,因为它再一次不再需要,它不再与GPU的工作方式相匹配(可编程着色器)。
关键是OpenGL API越小越紧,供应商编写健壮,高性能的驱动程序就越容易,并且学习正确有效地使用API就越容易。
几年前,几乎所有OpenGL中的任何东西都可以用3-5种不同的方式完成,这给开发人员带来了很多负担,如果你想要的话,可以确定哪个实现正确最佳表现。
所以他们正试图简化API。
答案 1 :(得分:9)
人们已经对你的问题做出了很好的回答。除了他们的回答之外,GL_QUADS
被弃用的原因之一是由于四边形的未定义性质。
例如,尝试使用点(0,0,0), (1,0,0), (1,1,1), (0,1,0)
建模2d方格。这是一个扁平的四边形,一个角落被拉起来。以这种方式绘制NORMAL平面是不可能的。根据驱动程序,它将以一种或另一种方式分成2个三角形 - 我们无法控制。这样的模型必须用两个三角形建模。 - 三角形的所有三个点总是位于同一平面上。
答案 2 :(得分:8)
它不会“成为”任何东西。与许多其他功能一样,版本3.0中已弃用GL_QUADS
,3.1版中已弃用已删除。显然,如果您创建兼容性上下文,这一切都无关紧要。
任何人可能会因为弃用它们而给出的任何答案都是绝对的推测。