簡體   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