繁体   English   中英

OpenGL-使用GL_TRIANGLE_STRIP从OBJ绘制索引

[英]OpenGL - drawing indices from OBJ using GL_TRIANGLE_STRIP

我试图创建一个OBJ解析器,该解析器将读取OBJ文件并使用GL_TRIANGLE_STRIP对其进行渲染。 我知道OBJ文件的行为类似于TRIANGLES,这就是为什么当我阅读面孔时,我将它们重新排列为STRIPS。

例子我有这样的脸

    f 5 1 4
    f 5 4 8
    f 3 7 8

由于OBJ文件是基于1的索引,因此在将它们重新排列为负1之后,它将以此顺序进行。

    f 4 0 3
    f 3 0 4
    f 0 4 3
    f 3 4 7
    f 4 7 2
    f 2 7 6
    f 7 6 7

我将此索引发送到OpenGL并使用glDrawElements绘制它们,但是我得到的输出是错误的。 在这里查看图片。

我基于使用GL_TRIANGLE_STRIP的OpenGL文档进行了安排,由于使用GL_TRIANGLES对我有效,因此我坚持这一步骤。 什么会导致错误的输出?

.obj文件包含适合在GL_TRIANGLES模式下呈现的索引。 您以GL_TRIANGLES_STRIP模式渲染它们。 您在这里完全错了。 GL_TRIANGLES模式渲染它们并感到高兴。

在其他模式下渲染相同的索引数据几乎总是不正确的。 GL_TRIANGLES模式每个三角形使用三个索引,而GL_TRIANGLE_STRIP平均每个三角形使用一个索引(它是压缩格式)。 因此,除非您将索引数据压缩了大约三倍,否则您将无法使用索引以GL_TRIANGLE_STRIP进行绘制。

有关详细信息,请参见Wikipedia文章 在下面,您可以在GL_TRIANGLE_STRIP中看到渲染索引{0,1,2,3,4,5,6}结果 显然,如果以GL_TRIANGLES模式渲染它们, 只会看到2个三角形,而不是5个。

GL_TRIANGLES_STRIP示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM