OpenGL 渲染流程圖解析

在OpenGL 中凶朗,不管是使用可編程管線還是固定管線铝噩,它的渲染架構都是由兩部分組成:Client 和 Server。

OpenGL 渲染架構.jpg

在這個圖中泪喊,管線分為上下兩部分棕硫,上部分是客戶端,下半部分是服務端袒啼。
客戶端(Client): 在CPU上所存儲的一些代碼饲帅,比如C/C++ 代碼,OpenGL API 等瘤泪。
服務端(Server):調用GPU 芯片灶泵,把客戶端的代碼傳遞到服務端進行處理。

  • 客戶端是存儲在CPU存儲器中的对途,并且在應用程序中執(zhí)行赦邻,或者在主系統(tǒng)內存的驅動程序中執(zhí)行。驅動程序會將渲染命令和數(shù)組組合起來实檀,發(fā)送給服務器執(zhí)行惶洲。(在一臺典型的個人計算機上,服務器實際上就是圖形加速卡上的硬件和內存)
  • 服務器和客戶端在功能上也是異步的膳犹。它們是各自獨立的軟件塊或硬件塊恬吕。我們希望它們2個端都盡量在不停的工作⌒氪玻客戶端不斷的把數(shù)據(jù)塊和命令塊組合在一起輸送到緩沖區(qū)铐料,然后緩沖區(qū)就會發(fā)送到服務器執(zhí)行。
  • 如果服務器停止工作等待客戶端豺旬,或者客戶端停止工作來等待服務器做好接受更多的命令和準備钠惩,我們把這種情況稱為管線停滯。

在這之前族阅,必須先為著色器提供數(shù)據(jù)才可以繼續(xù)后續(xù)渲染流程篓跛,向OpenGL 著色器傳遞渲染數(shù)據(jù)的方法有三種,屬性(Attribute)坦刀,Uniform值愧沟,紋理數(shù)據(jù)(Texture Data)蔬咬。

  • 屬性
    屬性表示經(jīng)常要發(fā)生改變的,比如對每一個頂點都要作改變的數(shù)據(jù)元素沐寺。實際上计盒,頂點位置本身就是一個屬性。屬性值可以是浮點數(shù)芽丹、整數(shù)、布爾數(shù)據(jù)卜朗。屬性還可以是紋理坐標拔第、顏色值、位移或者光照法線等场钉。

    屬性會從本地客戶端內存中復制存儲在圖形硬件中的一個緩沖區(qū)上蚊俺。這些屬性只提供給頂點著色器使用,對于片元著色器并沒有太大意義逛万。

    注意:屬性和Uniform值可以直接傳給頂點著色器(Vertex Shader)泳猬,屬性不能直接傳遞給片元著色器(Fragment Shader),但是可以通過頂點著色器傳遞到片元著色器里面宇植。

  • Uniform 值
    Uniform 值是一種對整個批次屬性都取統(tǒng)一值的單一值得封,它一般是不變的。Uniform 值可以直接傳遞給頂點著色器和片元著色器指郁。uniform 值最常見的應用是在頂點渲染中設置變換矩陣忙上。uniform 值還可以是標量類型、矢量類型或者uniform 矩陣等闲坎。Uniform 值實際上可以無數(shù)次地使用疫粥,設置一個應用于整個表面的單個顏色值,還可以設置一個時間值腰懂。在每次渲染某種類型的頂點動畫時修改它梗逮。Uniform值是每個批次改變一次,而不是每個頂點改變一次绣溜。

  • 紋理
    在頂點著色器慷彤、片段著色器中都可以對紋理數(shù)據(jù)進行采樣和篩選。不過大多數(shù)情況下把紋理數(shù)據(jù)傳給頂點著色器其實是沒有必要的怖喻,因為頂點著色器并不處理太多關于紋理數(shù)據(jù)的計算瞬欧。

    典型的應用場景:片段著色器對一個紋理值進行采樣,然后在一個三角形表面應用渲染紋理數(shù)據(jù)罢防。

    紋理數(shù)據(jù)艘虎,不僅僅表現(xiàn)在圖形,很多圖形文件格式都是以無符號字節(jié)(每個顏色通道8位)形式對顏色分量進行存儲的咒吐。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末野建,一起剝皮案震驚了整個濱河市属划,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌候生,老刑警劉巖同眯,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異唯鸭,居然都是意外死亡须蜗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門目溉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來明肮,“玉大人,你說我怎么就攤上這事缭付∈凉溃” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵陷猫,是天一觀的道長秫舌。 經(jīng)常有香客問我,道長绣檬,這世上最難降的妖魔是什么足陨? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮娇未,結果婚禮上钠右,老公的妹妹穿的比我還像新娘。我一直安慰自己忘蟹,他們只是感情好飒房,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著媚值,像睡著了一般狠毯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上褥芒,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天嚼松,我揣著相機與錄音,去河邊找鬼锰扶。 笑死献酗,一個胖子當著我的面吹牛,可吹牛的內容都是我干的坷牛。 我是一名探鬼主播罕偎,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼京闰!你這毒婦竟也來了颜及?” 一聲冷哼從身側響起甩苛,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俏站,沒想到半個月后讯蒲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡肄扎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年墨林,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犯祠。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡旭等,死狀恐怖,靈堂內的尸體忽然破棺而出雷则,到底是詐尸還是另有隱情,我是刑警寧澤肪笋,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布月劈,位于F島的核電站,受9級特大地震影響藤乙,放射性物質發(fā)生泄漏猜揪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一坛梁、第九天 我趴在偏房一處隱蔽的房頂上張望而姐。 院中可真熱鬧,春花似錦划咐、人聲如沸拴念。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽政鼠。三九已至,卻和暖如春队魏,著一層夾襖步出監(jiān)牢的瞬間公般,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工胡桨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留官帘,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓昧谊,卻偏偏與公主長得像刽虹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子呢诬,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容