簡體   English   中英

IBO比GL_TRIANGLE_STRIP差嗎?

[英]IBO worse then GL_TRIANGLE_STRIP?

出於學習目的,我決定使用3種方法繪制球體

  1. 顯示列表
  2. Voa Vbo(GL_TRIANGLE_STRIPE)
  3. Vao Vbo和Ibo(GL_TRIANGLES)

我讀到使用ibo讓程序運行得更快,但這是真的嗎? 對於100個切片和100個堆棧的球體,第二個方法產生40400個頂點,而第三個“僅”19802。通過這樣做,我保存20598個每個32字節= 659136個字節。

  1. verticesSize =(切片* 4)*(堆疊+ 1);

  2. IBO verticesSize =(slices * 2)*(stacks-1)+2;

但是我需要創建索引數組,在這種情況下,大小為118800(創建所有面所需的索引數)* 4(unsigned int的大小)= 475200字節! 雖然第二種方法使用15fps渲染1000個球體,但第三種方法使用僅僅6pfs渲染1000個球體

  1. 將指數數組從GL_TRIANGLES轉換為GL_TRIANGLE_STRIP會提供更有效的方法,然后第二種方法嗎?
  2. 使用ibo渲染球體是不是很糟糕?
  3. 為什么它更慢?indices數組中的順序是否有任何問題?

或許我寫的代碼完全錯了,為什么它如此掙扎:(如果有人有興趣,這里是我的代碼http://pastebin.com/raw.php?i=74jLKV5M

glDrawElements調用是錯誤的。 count參數應該是索引的數量,而不是數字的次數4.嘗試更改它。

使用索引而不是三角形條帶幾乎總是更快。 事實上,如果駕駛員在幕后使用索引來渲染三角形條帶,我也不會感到驚訝。

正如我在評論中提到的那樣,索引的順序會影響性能。 但是對於您的球體,您使用的索引模式可能是最佳的,即便如此,它所產生的差異也很小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM