【发布时间】:2021-01-02 07:07:58
【问题描述】:
我正在从 obj、colladae 文件加载模型,如果在导出时所有面都是完美的四边形,则网格的各个面不会三角化以节省内存。
现在我知道这对大多数模型都不起作用,但对于某些网格来说,例如一个立方体,我想让它工作的每个面都可以避免一些重复。
我有 2 个使用三角形带或 gl_quads 的选项。
三角形条带的问题是相邻面是相连的,因此它们之间不可能有一些间隙,即使对于一个简单的立方体,输出在外面看起来也是正确的,但是当我进入立方体时,即使启用了背面剔除我看到一些杂散的三角形连接立方体的正面和背面,基本上是一团糟。
但是使用 gl_quads 一切正常,但 docs 说 quads 在 3.1 中已弃用 [即使我仍然可以使用它 gl 4.0] 所以我的问题是
我是否可以继续使用 gl_quads 从文件中加载网格而不会在将来遇到问题,或者如何在没有整个连接问题的情况下将其替换为三角形条带?
我发现的一个解决方案是在 for 循环中为每 4 个顶点发出一次绘制调用,但这对于大型网格的性能来说是很糟糕的。
有什么建议吗?
【问题讨论】:
-
如果您使用的是兼容性配置文件OpenGL Context,您可以像任何其他已弃用的功能(例如立即模式)一样继续使用 QUADS
-
但这是一个好的做法/对性能有好处吗?我应该尝试用 gl_triangle 条替换它作为一个好的衡量标准还是没有性能影响?
-
由于它已被弃用,这不是一个好习惯。关于表演,我无话可说。性能与硬件和驱动程序有关。你必须测量它。
-
你不能。使用三角形和索引。我问过类似的问题:How to convert large arrays of quad primitives to triangle primitives?
标签: opengl quad gl-triangle-strip