glPolygonMode(GL_FRONT_AND_BACK,GL_LINE)与glDraw *(GL_LINE_STRIP ...)

时间:2015-01-27 13:31:00

标签: opengl deprecated glfw opengl-3

我今天做了一个有趣的,如果令人困惑的发现。

到目前为止,我已经使用glDraw*(GL_LINE_STRIP...)(或相关的GL_LINE*绘制模式)。当然,这总是需要对顶点进行一些重新排序,以使相同的顶点数据在GL_TRIANGLESGL_LINE_STRIP之间无缝地工作,但是好的,那里都很好。

然后今天我重新引入了一些旧的代码,并在其中找到了glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)。我查了一下,人们说在{3.3}核心上下文中不推荐使用GL_BACKGL_FRONT时,glPolygonMode是不推荐的,尽管只有GL_FRONT_AND_BACK作为第一个参数支持。所以我尝试使用GL_LINE作为第二个参数,以及glDraw*(GL_TRIANGLES...),它不仅完美地工作,它还不需要对GL_LINE_STRIP所需的顶点的显式重新排序。 (我回到了之前的配置来测试它。)

问题:

  1. 我应该在3.3核心环境中使用什么?两种方法都可以吗?我问的原因是我想知道线glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);是否真的给我一个核心资料,因为它毕竟只是对GLFW的暗示。

  2. 建议使用哪种方法?对后者有性能影响吗?这当然看起来更方便。

  3. 如果可以通过glDraw*(GL_LINE*...)进行glPolygonMode,为什么还要{{1}}?

1 个答案:

答案 0 :(得分:1)

广告1:在OpenGL Core配置文件中,这两种方法都非常好。

广告2:我不确定这一点,但我猜不会有太大的性能差异。

Ad 3:存在这种方法是因为人们可能还想绘制不是由三角形组成的线对象。这方面的例子是圆圈甚至是直线。