2012-06-25 53 views
1

是否可以將顯示列表數據存儲在視頻卡存儲器上? 我想只使用像視頻緩衝區對象(VBO)的視頻內存來存儲DisplayList。 但是當我嘗試它時,它總是使用主存儲器而不是顯存。我在nVidia GeForce 8600GTS和GTX260上測試過。使用視頻存儲器的OpenGL DisplayList

+0

「但是當我嘗試它時,它總是使用主存」你怎麼知道的?無法檢測到驅動程序在OpenGL中放置顯示列表的東西的位置。 –

回答

2

顯示列表是一個非常古老的功能,可以追溯到OpenGL-1.0。他們很久以前就被壓垮了。無論如何,你仍然可以將它們用於兼容性原因。

OpenGL的工作方式可以防止顯示列表僅被保存在GPU內存中。圖形服務器(就像OpenGL所說的那樣)是一個純粹抽象的東西,規範保證你放在顯示列表中的東西總是可用的。然而,在現代GPU中,只有有限的內存量,因此有效載荷數據可根據需要換入和換出。

有效的GPU內存是高速緩存用於系統RAM中的數據(與系統RAM應作爲高速緩存進行存儲一樣)。

此外,現代GPU可能會崩潰,驅動程序將執行完全重置,給用戶一切正常的印象。但重置後,GPU內存上的所有數據都必須重新初始化。

因此,OpenGL有必要將每個有效載荷數據的副本保存在內存中以支持平滑操作。

因此,您的數據顯示爲消耗系統RAM也是非常正常的。儘管很有可能,顯示列表也是GPU內存中的緩存

1

不贊成使用顯示列表。您可以使用具有頂點索引的VBO來使用圖形內存,並使用glDrawElements進行繪製。

+0

感謝您的回覆。我想使用DisplayList來顯示視頻卡驅動程序的兼容性問題,並且還使用VBO來加快渲染速度。 –