glPolygonMode GL_LINE和glDrawElements GL_LINE_LOOP模式之间有何区别?

ekqde3dh  于 2022-11-04  发布在  Go
关注(0)|答案(1)|浏览(163)

下面的代码片段给予了完全相同的结果:
1.

glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glDrawElements(GL_LINE_LOOP, vbo.rows(), GL_UNSIGNED_INT, 0);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDrawElements(GL_LINE_LOOP, vbo.rows(), GL_UNSIGNED_INT, 0);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDrawElements(GL_TRIANGLES, vbo.rows(), GL_UNSIGNED_INT, 0);

那么,每个选项是否有不同的用途?(或者GL_LINE_LOOP只是多边形模式的覆盖)?
编辑:我正在试用libigl示例项目。下面是输出的屏幕截图:

dffbzjpn

dffbzjpn1#

glPolygonMode改变光栅化模式,但不更改primitive。基元类型保持不变,仍绘制GL_TRIANGLES基元。glPolygonMode对三角形以外的其他基元没有影响。GL_LINE_LOOP是一种不同的基元类型。它将所有顶点连接到一条线上。如果试图绘制多个分离的三角形(三角形之间有间隙),那么您就会看到不同之处。您可以使用glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)GL_TRIANGLES图元绘制多个单独的三角形轮廓,但不能使用GL_LINE_LOOP图元。

相关问题