【问题标题】:Conversion from a shape drawn with quads, to a shape drawn with triangles从用四边形绘制的形状转换为用三角形绘制的形状
【发布时间】:2018-04-26 15:35:37
【问题描述】:

我是一名学生,几周前我们被要求使用 GL_DRAW_QUADS 之类的 openGL 命令对 3D 形状进行编程,我是一名学生,在此之前我基本上一直在使用四边形(因为它确实更容易)

我遇到了障碍。我有多个可以用四边形渲染的形状,例如球体和圆环,当直接使用 GL_QUADS 渲染时,这些形状目前可以按预期工作

但是,当存储形状以稍后通过顶点缓冲区渲染时,这是更好的处理方式,我的模型渲染器只能处理由三角形组成的形状。尽管从技术上讲,四边形是两个三角形,但只需更改我的方法以使用 GL_TRIANGLES、GL_TRIANGLE_FAN 或 GL_TRIANGLE_STRIP 并不能解决我的问题。

我想知道将四边形绘制的形状转换为三角形的最佳方法是什么,而无需完全重写渲染这些形状的方法。

【问题讨论】:

    标签: c++ opengl freeglut


    【解决方案1】:

    假设您有一组顶点 {v1,v2,v3,v4,v5,...} 并假设您将索引列表 {i1,i2,i3,i4,i5,...} 传递给draw 命令,你只需要传递一个不同的索引列表。

    您之前会通过 {i1,i2,i3,i4} 的地方,现在可以通过 {i1,i2,i4,i4,i2,i3} 来获得覆盖同一个四边形的两个三角形。如果你想要粉丝,它会变得更加复杂。您每四个索引执行一次相同的过程。

    1 -- 2 1 -- 2 | |变成 | / | | | | / | 4 -- 3 4 -- 3

    【讨论】:

    • 这很好用,谢谢。我以为我必须做一些更疯狂的事情,没想到会这么简单,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    相关资源
    最近更新 更多