我今天做了一个有趣的,如果令人困惑的发现。
到目前为止,我已经使用glDraw*(GL_LINE_STRIP...)
(或相关的GL_LINE*
绘制模式)。当然,这总是需要对顶点进行一些重新排序,以使相同的顶点数据在GL_TRIANGLES
和GL_LINE_STRIP
之间无缝地工作,但是好的,那里都很好。
然后今天我重新引入了一些旧的代码,并在其中找到了glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)
。我查了一下,人们说在{3.3}核心上下文中不推荐使用GL_BACK
和GL_FRONT
时,glPolygonMode
是不推荐的,尽管只有GL_FRONT_AND_BACK
作为第一个参数支持。所以我尝试使用GL_LINE
作为第二个参数,以及glDraw*(GL_TRIANGLES...)
,它不仅完美地工作,它还不需要对GL_LINE_STRIP
所需的顶点的显式重新排序。 (我回到了之前的配置来测试它。)
问题:
我应该在3.3核心环境中使用什么?两种方法都可以吗?我问的原因是我想知道线glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
是否真的给我一个核心资料,因为它毕竟只是对GLFW的暗示。
建议使用哪种方法?对后者有性能影响吗?这当然看起来更方便。
如果可以通过glDraw*(GL_LINE*...)
进行glPolygonMode
,为什么还要{{1}}?
答案 0 :(得分:1)
广告1:在OpenGL Core配置文件中,这两种方法都非常好。
广告2:我不确定这一点,但我猜不会有太大的性能差异。
Ad 3:存在这种方法是因为人们可能还想绘制不是由三角形组成的线对象。这方面的例子是圆圈甚至是直线。