我正在開發一個使用OpenGL提供的顯示列表的應用程序。我的想法是調用重複性任務的顯示列表,例如轉換和服務器狀態集。 實際上,實現允許每個可渲染對象有兩個顯示列表。在這兩種情況下,顯示列表不包含頂點,法線等,但僅包含矩陣和服務器狀態。顯示列表生成
我現在的問題是如何決定何時生成顯示列表:它可能會發生,在某些情況下,生成顯示列表的屬性會發生變化,從而導致顯示列表的新編譯(認爲鼠標移動了旋轉一個東西)。
只有當屬性在N個渲染循環中沒有改變時,生成顯示列表可能是適當的嗎?如何量化這個N?我應該禁用臨時特定的顯示列表嗎?
注:和在RenderState(315:356):源可以在Renderable(201 187)中找到。對於身份不好(我認爲這是我的VS ...)我只注意到了。 :(
OT:如何重新格式化只identation :)
+1顯示列表緩慢,過時並且使事情複雜化 – 2009-10-31 15:44:34
我已經使用了緩衝區對象。在僅用於OpenGL 3的實現中,可以排除顯示列表管理,但在大多數顯卡上,顯示列表允許避免大量的PInvoke;另外高效地顯示列出緩存命令和數據,增加渲染性能(例如,在照明期間的預計算反矩陣)。 – Luca 2009-10-31 15:47:57
您是否測試過實際性能提升?這取決於很多事情;而且,如果您對性能感興趣,則可以(也可能應該)預先計算並自行存儲照明矩陣。 – 2009-10-31 15:59:04