关于opengl:GL_QUADS有什么不好的地方?

What is so bad about GL_QUADS?

我听说GL_QUADS将在OpenGL版本> 3.0中删除,为什么? 那我的旧程序将来会不会工作? 我已经进行了基准测试,并且GL_TRIANGLESGL_QUADS的渲染速度没有差异(甚至可能是GL_QUADS更快)。 那有什么意义呢?


关键是您的GPU渲染三角形,而不是四边形。从两个三角形构造一个矩形几乎是微不足道的,因此,API不需要真正地具有原生渲染四边形的能力。 OpenGL正在经历一个重要的修整过程,削减了15年前有意义的许多功能,但不再匹配GPU的工作方式或GPU的工作方式。我相信,固定功能管道也从最新版本中删除,因为再次不再需要固定功能管道,并且它不再匹配GPU的工作方式(可编程着色器)。

关键是可以使OpenGL API变得更小和更紧密,供应商更容易编写健壮的高性能驱动程序,更容易学会正确有效地使用API??。

几年前,OpenGL中几乎所有的事情都可以用3-5种不同的方式完成,这给开发人员带来了很多负担,使他们无法确定哪种实现是最佳性能。

因此,他们正在尝试简化API。


人们已经很好地回答了您的问题。在他们的答案之外,不赞成使用GL_QUADS的原因之一是因为quads的不确定性质。

例如,尝试为点(0,0,0), (1,0,0), (1,1,1), (0,1,0)的2d正方形建模。这是扁平的四角形,向上拖动了一个角。用这种方法不可能画出普通的平面正方形。根据驱动程序的不同,它将以一种或另一种方式拆分为2个三角形,这是我们无法控制的。这样的模型必须用两个三角形来建模。 -三角形的所有三个点始终位于同一平面上。


它不是要去做任何事情。与许多其他功能一样,GL_QUADS在3.0版中已弃用,在3.1版中已删除。显然,如果您创建兼容性上下文,那么这一切都是无关紧要的。

任何人可能会因为弃用它们而给出任何答案,这纯粹是猜测。