為什么要使用GPU編程
OpenGL 使用的的是GPU的高并發(fā)能力,那為什么要使用GPU而不是CPU了望薄?
CPU是多指令數(shù)據(jù)流(MISD)體系結(jié)構(gòu)兆解,擅長的是做邏輯控制,數(shù)據(jù)處理時基本是單流水線的榨为,所以我們寫for循環(huán)代碼時,CPU需要重復迭代的跑很多遍煌茴。
GPU是典型的單指令多數(shù)據(jù)(SIMD)體系結(jié)構(gòu)随闺,不擅長邏輯控制,但卻有強大的并行計算能力蔓腐,所以處理for循環(huán)代碼只需要跑一遍矩乐,所以在圖形界面中那么多的頂點、片段能快速的并行在顯卡中渲染處理。GPU的晶體管是幾十億個散罕,而CPU的晶體管通常只有幾億個分歇。
最早圖形處理是放在CPU上,后來發(fā)現(xiàn)可以在主板上放一個單獨的芯片來加速圖形繪制欧漱,于是命名為圖像處理單元职抡。后來NVIDIA把這個處理單元做強大,給它改了個稱呼硫椰,叫GPU, 也叫圖像處理器繁调,再后來GPU就以比CPU高幾倍的速度增長性能。
開始的時候GPU不能編程靶草,也叫固定管線蹄胰,就是把數(shù)據(jù)按照固定的通路走完。因為和CPU同樣具有計算處理能力奕翔,所以就出來了可編程的GPU裕寨,最開始是用匯編語言編寫,所以叫可編程管線派继。后來支持高級語言更加容易讓GPU里面寫代碼宾袜,現(xiàn)在這些高級語言都被稱為高級著色語言Shading Language,這些shader目前已經(jīng)被廣泛應(yīng)用在我們的各種游戲中驾窟。