操作系統(tǒng):Windows8.1
顯卡:Nivida GTX965M
開發(fā)工具:Visual Studio 2017
Introduction
頂點(diǎn)緩沖區(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)建兩個(gè)頂點(diǎn)緩沖區(qū)。一個(gè)緩沖區(qū)提供給CPU-HOST內(nèi)存訪問使用,用于從頂點(diǎn)數(shù)組中提交數(shù)據(jù),另一個(gè)頂點(diǎn)緩沖區(qū)用于設(shè)備local內(nèi)存。我們將會(huì)使用緩沖區(qū)拷貝的命令將數(shù)據(jù)從暫存緩沖區(qū)拷貝到實(shí)際的圖形卡內(nèi)存中。
Transfer queue
緩沖區(qū)拷貝的命令需要隊(duì)列簇支持傳輸操作,可以通過VK_QUEUE_TRANSFER_BIT標(biāo)志位指定。好消息是任何支持VK_QUEUE_GRAPHICS_BIT 或者 VK_QUEUE_COMPUTE_BIT標(biāo)志位功能的隊(duì)列簇都默認(rèn)支持VK_QUEUE_TRANSFER_BIT操作。這部分的實(shí)現(xiàn)不需要在queueFlags顯示的列出。
如果需要挑戰(zhàn),甚至可以嘗試為不同的隊(duì)列簇指定具體的傳輸操作。這部分實(shí)現(xiàn)需要對代碼做出如下修改: