操作系統(tǒng):Windows8.1
顯卡:Nivida GTX965M
開發(fā)工具:Visual Studio 2017
Introduction
頂點緩沖區(qū)現(xiàn)在已經(jīng)可以正常工作,但相比于顯卡內(nèi)部讀取數(shù)據(jù),單純從CPU訪問內(nèi)存數(shù)據(jù)的方式性能不是最佳的。最佳的方式是采用VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT標(biāo)志位,通常來說用在專用的圖形卡,CPU是無法訪問的。在本章節(jié)我們創(chuàng)建兩個頂點緩沖區(qū)。一個緩沖區(qū)提供給CPU-HOST內(nèi)存訪問使用,用于從頂點數(shù)組中提交數(shù)據(jù),另一個頂點緩沖區(qū)用于設(shè)備local內(nèi)存。我們將會使用緩沖區(qū)拷貝的命令將數(shù)據(jù)從暫存緩沖區(qū)拷貝到實際的圖形卡內(nèi)存中。
Transfer queue
緩沖區(qū)拷貝的命令需要隊列簇支持傳輸操作,可以通過VK_QUEUE_TRANSFER_BIT標(biāo)志位指定。好消息是任何支持VK_QUEUE_GRAPHICS_BIT 或者 VK_QUEUE_COMPUTE_BIT標(biāo)志位功能的隊列簇都默認(rèn)支持VK_QUEUE_TRANSFER_BIT操作。這部分的實現(xiàn)不需要在queueFlags顯示的列出。
如果需要挑戰(zhàn),甚至可以嘗試為不同的隊列簇指定具體的傳輸操作。這部分實現(xiàn)需要對代碼做出如下修改: