【问题标题】:glDrawElements draw polygonglDrawElements 绘制多边形
【发布时间】:2014-08-04 06:18:33
【问题描述】:

我读到 glDrawElements 的第一个参数是模式: http://www.opengl.org/sdk/docs/man3/xhtml/glDrawElements.xml

接受符号常量 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。

我没有看到 GL_POLYGON。这是否意味着我不能使用 GL_POLYGON?如果我有 10 个索引?我是否需要将其转换为几个多边形,每个多边形包含 3 个索引?如果是真的,我该怎么做?

【问题讨论】:

    标签: c++ opengl 3d polygon


    【解决方案1】:

    www.opengl.org 上的 GL3GL4 级别的手册页仅记录了 OpenGL 的核心配置文件。 GL_POLYGON 已被弃用,并且在 OpenGL 3.2 中将规范拆分为核心和兼容性配置文件时,它不属于核心配置文件。

    如果您创建支持兼容性配置文件的上下文,您仍然可以使用GL_POLYGON。但如果你刚开始,我建议你坚持使用 Core Profile 功能。如果您确实需要有关已弃用功能的文档,则必须返回GL2 man pages

    要绘制多边形,GL_TRIANGLE_FAN 是最简单的替换。您可以对三角形扇形使用与 GL_POLYGON 相同的一组顶点,并且会产生相同的结果。

    【讨论】:

    • 为什么不推荐使用GL_POLYGON?我检查了GL_POLYGONGL_TRIANGLE_FAN ,FPS 保持不变。
    • GL_POLYGONGL_QUADS 均已删除。多边形和四边形打开了一堆问题(如果你提交一个非平面多边形怎么办?如果你的多边形不是凸的怎么办?你如何在多边形顶点之间插入值?你如何剪辑它们?)。只需自己对脸部进行三角测量并提交三角形。有用于此用途的库。
    • 这些库的名称是什么?
    • 顺便说一句,这些不是您声称的最新手册页。这些是 GL3 手册页。您可以告诉这一点,因为latest 手册页是 GL4,其中包括 GL_PATCHES 作为镶嵌着色器的原始类型。
    • 对原始答案中的“最新”措辞感到抱歉,这充其量是模棱两可的。我修复了更准确的答案。我一直认为 3.2 是第一个具有核心配置文件的版本,因为这是我看到单独规范文档的第一个版本。
    【解决方案2】:

    顺便说一下,您正在链接到 GL3 手册页。

    由于GL_POLYGON 在 3.0 中已被弃用并在 3.1 中被删除,因此您不会在此处找到它。实际上,您会在那里找到一些仅在 GL 3.2 中支持的标记(邻接原语,在几何着色器出现时引入);幸运的是 实际上记录在手册页本身中,这与 GL_POLYGON 已被弃用这一事实不同。

    对于兼容性配置文件(您正在使用),您应该查看 GL2 手册页。可以在here 找到 GL2 手册页。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 2023-04-08
      • 2018-09-29
      • 2021-08-18
      • 1970-01-01
      相关资源
      最近更新 更多