創(chuàng)建一個三角形

在OpenGL中,任何事物都處在3D空間叔扼,而屏幕和窗口是2D像素組街氢。這導致OpenGL大部分時間都在處理把3D數(shù)據(jù)轉(zhuǎn)變?yōu)檫m應屏幕的2D像素。3D到2D的過程被稱為OpenGL的圖像渲染管線(即管線苫拍,實際上指的是一堆原始圖形數(shù)據(jù)途經(jīng)一個輸送管道芜繁,期間經(jīng)過各種變化處理最終出現(xiàn)在屏幕的過程)。
圖形渲染管線可以被劃分為幾個部分绒极,每個階段把前一階段的輸出當作自己的輸入骏令。每個階段都是高度專門化的,有特定的函數(shù)實現(xiàn)垄提,并且很容易并行執(zhí)行榔袋。正是由于它們具有并行執(zhí)行的特性,當今大多數(shù)顯卡都有成千上萬的小處理核心铡俐,它們在GPU上為每一個(渲染管線)階段運行各自的小程序凰兑,從而在圖形渲染管線中快速處理你的數(shù)據(jù)。這些小程序叫做著色器(Shader)审丘。


image.png

一吏够、頂點數(shù)據(jù)

一系列圖形頂點的集合。
有了頂點數(shù)據(jù)滩报,OpenGL其實還是不知道我們要做什么樣的圖形锅知。為了告訴OpenGL我們要做什么,我們會給這些數(shù)據(jù)指定一些渲染類型脓钾,到底是點售睹、三角形還是線。我們所給的這個提示被稱為圖元可训。常用的圖元有:GL_POINTS昌妹、GL_TRIANGLES捶枢、GL_LINE_STRIP。
這里的輸入采用的是標準化設備坐標捺宗,即xyz的值的范圍只能是在-1到1之間柱蟀。

二、頂點著色器

這是管線的第一部分蚜厉。它把一個單獨的頂點作為輸入长已,然后把這個3D坐標轉(zhuǎn)換為另一種3D坐標,同時開發(fā)人員還可以再做一些基礎處理昼牛。

三术瓮、圖元裝配

將頂點著色器輸出的的所有頂點作為輸入,并根據(jù)指定的圖元裝配成相應的圖形贰健。

四胞四、幾何著色器

將圖元裝配的輸出作為輸入,它可以通過產(chǎn)生新頂點構(gòu)造出新的(或是其它的)圖元來生成其他形狀

五伶椿、光柵化

把圖元映射為最終屏幕上相應的像素辜伟,生成供片段著色器(Fragment Shader)使用的片段(Fragment)。在片段著色器運行之前會執(zhí)行裁切(Clipping)脊另。裁切會丟棄超出你的視圖以外的所有像素导狡,用來提升執(zhí)行效率。

六偎痛、片段著色器

計算一個像素的最終顏色旱捧,這也是所有OpenGL高級效果產(chǎn)生的地方。通常踩麦,片段著色器包含3D場景的數(shù)據(jù)(比如光照枚赡、陰影、光的顏色等等)谓谦,這些數(shù)據(jù)可以被用來計算最終像素的顏色贫橙。

七、測試與混合

這個階段檢測片段的對應的深度(和模板(Stencil))值(后面會講)茁计,用它們來判斷這個像素是其它物體的前面還是后面料皇,決定是否應該丟棄。這個階段也會檢查alpha值(alpha值定義了一個物體的透明度)并對物體進行混合(Blend)星压。所以践剂,即使在片段著色器中計算出來了一個像素輸出的顏色,在渲染多個三角形的時候最后的像素顏色也可能完全不同娜膘。

在現(xiàn)代OpenGL中逊脯,我們必須定義至少一個頂點著色器和一個片段著色器(因為GPU中沒有默認的頂點/片段著色器)。
著色器:是運行在GPU上的小程序竣贪,這些小程序為圖形渲染管線的某個特定部分而運行

總結(jié)

整體的流程總結(jié)如下:
1军洼、初始化GLFW
2巩螃、配置GLFW
3、創(chuàng)建窗口對象GLFWwindow
4匕争、將創(chuàng)建的窗口對象設置為當前上下文context
5避乏、初始化GLEW
6、可視化窗口
7甘桑、圖形渲染管線:VAO拍皮、頂點數(shù)據(jù)、連接頂點屬性跑杭、啟用頂點屬性铆帽、VBO、Vertex Shader德谅、Fragment Shader爹橱、Shader Programe、刪除Shader
8窄做、繪制

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末愧驱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子椭盏,更是在濱河造成了極大的恐慌冯键,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庸汗,死亡現(xiàn)場離奇詭異,居然都是意外死亡手报,警方通過查閱死者的電腦和手機蚯舱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掩蛤,“玉大人枉昏,你說我怎么就攤上這事∽崮瘢” “怎么了兄裂?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長阳藻。 經(jīng)常有香客問我晰奖,道長,這世上最難降的妖魔是什么腥泥? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任匾南,我火速辦了婚禮,結(jié)果婚禮上蛔外,老公的妹妹穿的比我還像新娘蛆楞。我一直安慰自己溯乒,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布豹爹。 她就那樣靜靜地躺著裆悄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪臂聋。 梳的紋絲不亂的頭發(fā)上光稼,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音逻住,去河邊找鬼钟哥。 笑死,一個胖子當著我的面吹牛瞎访,可吹牛的內(nèi)容都是我干的腻贰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼扒秸,長吁一口氣:“原來是場噩夢啊……” “哼播演!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伴奥,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤写烤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拾徙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洲炊,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年尼啡,在試婚紗的時候發(fā)現(xiàn)自己被綠了暂衡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡崖瞭,死狀恐怖狂巢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情书聚,我是刑警寧澤唧领,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站雌续,受9級特大地震影響斩个,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜西雀,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一萨驶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艇肴,春花似錦腔呜、人聲如沸叁温。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽膝但。三九已至,卻和暖如春谤草,著一層夾襖步出監(jiān)牢的瞬間跟束,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工丑孩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留冀宴,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓温学,卻偏偏與公主長得像略贮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仗岖,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容