简单的OpenGL澄清

时间:2011-11-07 19:16:05

标签: opengl

OpenGL 3+版本仅使用“GL_TRIANGLES”吗?

这就是我所读到的,但在OpenGL 3.3的文档中,http://www.opengl.org/sdk/docs/man3/,“glDrawArrays()”采用以下参数:

GL_POINTS,
GL_LINE_STRIP,
GL_LINE_LOOP,
GL_LINES,
GL_LINE_STRIP_ADJACENCY,
GL_LINES_ADJACENCY,
GL_TRIANGLE_STRIP,
GL_TRIANGLE_FAN,
GL_TRIANGLES,
GL_TRIANGLE_STRIP_ADJACENCY,
GL_TRIANGLES_ADJACENCY

3 个答案:

答案 0 :(得分:4)

  

OpenGL 3+版本是否仅使用“GL_TRIANGLES”

你的意思是“而不是提供GL_QUADS和GL_POLYGON”?

确实是的。四边形和多边形已被完全删除。大多数多边形无论如何都需要被镶嵌成三角形,因为OpenGL只能处理凸多边形(凸面也可以实现平面!)。类似于四边形。

当然,仍然需要支持线和点。

答案 1 :(得分:2)

  

OpenGL 3+版本只使用“GL_TRIANGLES”吗?这就是我读到的内容

在哪儿?请提供链接。

“GL_TRIANGLES”和“三角形”之间存在差异。

GL_TRIANGLES是特定的基元类型。它有a specific interpretation。它的基本原始类型是“三角形”(如同,它生成三角形),但它还有更多。

“三角形”正是如此:表示平面区域的3个顶点的组合。 GL_TRIANGLES,GL_TRIANGLE_STRIP和GL_TRIANGLE_FAN 生成三角形。

OpenGL 3.1+核心不允许使用特定的基元类型GL_QUADS,GL_QUAD_STRIP(即:所有“四元组”类型)和GL_POLYGON。其他一切都是公平的游戏。

答案 2 :(得分:1)

根据规范的2.6.1部分,像glDrawArrays()这样的命令接受你发布的原语。所以,不,OpenGL 3.3不接受GL_TRIANGLES。

您所阅读的内容可能是为了解释OpenGL不再支持GL_QUADS和GL_POLYGON等原语。

根据规范的附录E.2.2删除了Quad和polygon基元(从版本3.1开始,之前的版本仍支持它们,尽管它们已从版本3.0中弃用)。

您可以找到规范here