2013-06-27 78 views
0

在我的OpenGL程序中,我從頭文件中讀取數據以找出幾何尺寸,然後malloc一個Indice數組和一個Vertex數組,然後傳遞給VBO ,甚至有可能直接從硬盤讀取數據,還是隻能將GPU存儲器鏈接到計算機的RAM上?有沒有辦法直接從硬盤讀取GPU

回答

3

GPU不直接連接到系統RAM。中間有一輛公共汽車,在當前一代計算機中是PCI-Express總線。 ATA存儲器之間有一個控制器。記憶之間沒有直接聯繫。

但有有DMA,它允許某些periphials通過DMA通道直接訪問系統內存。 PCI-Express上的DMA也適用於臨時設備。理論上,GPU可以對ATA控制器執行DMA。

實際上這沒什麼用處!爲什麼?由於文件系統。即使有某種驅動程序支持讓GPU直接訪問存儲周邊設備,它仍然需要完成所有的文件系統業務,而這並不會與GPU設計的程度並行。


唉關於你的問題:

在我的OpenGL程序中,我從頭文件中讀取找出幾何尺寸,然後malloc的一個指數之數組和頂點數組,然後我傳遞給VBO,甚至可以直接從硬盤讀取數據,還是隻將GPU存儲器鏈接到計算機的RAM上?

爲什麼沒有簡單的內存映射這些文件?通過這種方式,您可以避免分配您首次讀取的緩衝區,並將內存映射文件指針傳遞給OpenGL,這確實允許驅動程序在存儲驅動程序緩衝區和GPU之間實際執行DMA傳輸,該緩衝區距離它最近您的原始請求。當然,存儲設備上的數據必須以適合GPU的格式準備,否則它幾乎沒有用處。如果需要預處理,最好使用CPU。 GPU不喜歡序列化數據。

+0

我已經編程了一段時間,並且仍然感到驚訝,因爲我在某些領域知道得有多少,謝謝! – user22817

相關問題