我正在完成wavefront對象分析器,我想用它來構造通用網格對象。我的引擎使用OpenGL 4和着色器在我的引擎中繪製所有內容。將OpenGL中的網格渲染爲一系列子組?
我的問題是關於如何確保渲染網格的最佳渲染效率。
A wavefront .obj file通常有許多指定的對象子組。
子組可能被分配了特定的材料(例如閃亮的紅色)。
所以網格可能是一個相當複雜的子組集合,每個子集都有自己的材質分配。
我的問題是 -
問:我需要繪製每個子組分別例如調用glDrawElements爲每個子組? (所以,如果我有4個獨立的子羣體,我不得不提出四個glDrawElements調用,從而調用着色器的4倍與4個均勻變化(材料/紋理))
glDrawElements(GL_TRIANGLES, nNumIndicesInGroup, GL_UNSIGNED_INT, ((char*)NULL)+ first-vertex-offset);
如果這是正確的,然後我將不得不計算:
每個子組中的子組的開始的偏移索引(意味着單獨的索引陣列和VAO對於每個子組) 頂點
這看起來非常低效,我吠叫錯了樹嗎?
Smooth shading across polygons is enabled by smoothing groups.
s 1
...
# Smooth shading can be disabled as well.
s off
...
任何人都可以提出什麼平滑陰影值說明什麼?例如。 s1,s2,s4等
這個問題,如上所述,如果不知道更多關於頂點數據是什麼以及您將如何處理的問題,就不能回答這個問題。材料,着色器等問題都會影響性能。 – 2012-04-24 00:14:22