CPU和GPU之間的通信


渲染流水線的起點是CPU,即應用階段。大致可分為下面三個階段:

1.把數據加載到顯存

2.設置渲染狀態

3.調用DrawCall

 

1.把數據加載到顯存

所有渲染所需要的數據都需要從硬盤(Hard Disk Drive, HDD)中加載到系統內存(Random Access Memory,RAM)中。然后,網格和紋理等數據又被加載到顯卡上的存儲空間:顯存(Video Random Access Memory,VRAM)中。這是因為顯卡對於顯存的訪問速度更快,而大多數顯卡對於RAM沒有直接的訪問權利。

注意:真是渲染中需要加載到顯存的數據復雜的多。例如:頂點的位置信息、法線方向、頂點顏色、紋理坐標等。

之后,開始通過CPU來設置渲染狀態,從而使GPU進行渲染工作。

 

2.設置渲染狀態

渲染狀態:通俗的解釋就是,這些狀態定義了場景中的網格是怎樣被渲染的。例如:使用哪個頂點着色器/片段着色器、光源屬性、材質等。如果我們沒有更改渲染狀態,那么所有的網格都將使用同一種渲染狀態。

設置好渲染狀態后,CPU需要調用一個渲染命令來告訴GPU開始進行渲染,這個渲染命令就是DrawCall。

 

3.調用DrawCall

DrawCall就是一個命令,它的發起方是CPU,接收方是GPU。這個命令僅僅會指向一個需要被渲染的圖元(primitives)(點、線、三角面)列表,而不會包含任何材質信息(因為已經在2中完成了)。

當給定一個DrawCall時,GPU會根據渲染狀態(例如:材質、紋理、着色器等)和所有輸入的頂點數據進行計算,最終輸出像素。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM