【opengl】學(xué)習(xí)筆記1

近來課程需要户辱,跟著learnopengl.com學(xué)習(xí)了opengl,在此將要點(diǎn)記錄以下糙臼。

學(xué)習(xí)網(wǎng)站:learnopengl(英文)learnopengl(中文)

一庐镐、OpenGL是什么

????????一般它被認(rèn)為是一個(gè)API(Application Programming Interface, 應(yīng)用程序編程接口),包含了一系列可以操作圖形变逃、圖像的函數(shù)必逆。然而,OpenGL本身并不是一個(gè)API韧献,它僅僅是一個(gè)由Khronos組織制定并維護(hù)的規(guī)范(Specification)末患。

????????OpenGL規(guī)范嚴(yán)格規(guī)定了每個(gè)函數(shù)該如何執(zhí)行,以及它們的輸出值锤窑。至于內(nèi)部具體每個(gè)函數(shù)是如何實(shí)現(xiàn)(Implement)的璧针,將由OpenGL庫的開發(fā)者自行決定(譯注:這里開發(fā)者是指編寫OpenGL庫的人)。

? ??????實(shí)際的OpenGL庫的開發(fā)者通常是顯卡的生產(chǎn)商渊啰。

? ? ? ? 簡言之探橱,OpenGL只是一個(gè)標(biāo)準(zhǔn)/規(guī)范,具體的實(shí)現(xiàn)是由驅(qū)動開發(fā)商針對特定顯卡實(shí)現(xiàn)的

? ??????所有版本的OpenGL規(guī)范文檔都被公開的寄存在Khronos那里绘证。例如OpenGL3.3規(guī)范文檔

二隧膏、核心模式與立即渲染模式(Core-profile vs Immediate mode)

? ? ? ? 早期的OpenGL使用立即渲染模式(Immediate mode,也就是固定渲染管線)嚷那,從OpenGL3.2開始胞枕,規(guī)范文檔開始廢棄立即渲染模式,并鼓勵開發(fā)者在OpenGL的核心模式(Core-profile)下進(jìn)行開發(fā)魏宽,這個(gè)分支的規(guī)范完全移除了舊的特性腐泻。

三决乎、擴(kuò)展

? ??????OpenGL的一大特性就是對擴(kuò)展(Extension)的支持,當(dāng)一個(gè)顯卡公司提出一個(gè)新特性或者渲染上的大優(yōu)化派桩,通常會以擴(kuò)展的方式在驅(qū)動中實(shí)現(xiàn)构诚。

? ??????通過這種方式,開發(fā)者不必等待一個(gè)新的OpenGL規(guī)范面世铆惑,就可以使用這些新的渲染特性了范嘱。

? ??????通常,當(dāng)一個(gè)擴(kuò)展非常流行或者非常有用的時(shí)候员魏,它將最終成為未來的OpenGL規(guī)范的一部分丑蛤。

四、狀態(tài)機(jī)

? ??????OpenGL本質(zhì)上是個(gè)大狀態(tài)機(jī)撕阎。

? ? ? ? 關(guān)于狀態(tài)機(jī)的解釋:一系列的變量描述OpenGL此刻應(yīng)當(dāng)如何運(yùn)行盏阶。OpenGL的狀態(tài)通常被稱為OpenGL上下文(Context)。

? ??????狀態(tài)設(shè)置函數(shù)(State-changing Function):這類函數(shù)將會改變上下文闻书。

? ??????狀態(tài)使用函數(shù)(State-using Function):這類函數(shù)會根據(jù)當(dāng)前OpenGL的狀態(tài)執(zhí)行一些操作。

????????我們通常使用如下途徑去更改OpenGL狀態(tài):

? ? ? ? ①設(shè)置選項(xiàng)(setting some options)

? ? ? ? ②操作緩沖(manipulating some buffers)

????????最后脑慧,我們使用當(dāng)前OpenGL上下文來渲染(render using the current context)魄眉。

五、對象

? ??????OpenGL庫是用C語言寫的闷袒,同時(shí)也支持多種語言的派生坑律,但其內(nèi)核仍是一個(gè)C庫。

? ? ? ? 由于C的一些語言結(jié)構(gòu)不易被翻譯到其它的高級語言囊骤,因此OpenGL引入了一些抽象層晃择。

????????“對象(Object)”就是其中一個(gè)抽象概念。

? ??????在OpenGL中一個(gè)對象是指一些選項(xiàng)的集合也物,它代表OpenGL狀態(tài)(即OpenGL上下文)的一個(gè)子集宫屠。

? ??????可以把對象看做一個(gè)C風(fēng)格的結(jié)構(gòu)體(Struct):



? ??????當(dāng)我們使用一個(gè)對象時(shí),通郴牵看起來像如下一樣(把OpenGL上下文看作一個(gè)大的結(jié)構(gòu)體):



使用OpenGL時(shí)常見的工作流

? ??????使用OpenGL時(shí)常見的工作流:

? ? ? ? ①首先創(chuàng)建一個(gè)對象浪蹂,然后用一個(gè)id保存它的引用(實(shí)際數(shù)據(jù)被儲存在后臺)

? ? ? ? ②然后我們將對象綁定至上下文的目標(biāo)位置

????????????(例子中窗口對象目標(biāo)的位置被定義成GL_WINDOW_TARGET)

? ? ? ? ③接下來我們設(shè)置窗口的選項(xiàng)。設(shè)置的選項(xiàng)將被保存在objectId所引用的對象中

? ? ? ? ④最后我們將目標(biāo)位置的對象id設(shè)回0告材,解綁這個(gè)對象

? ? ? ?因?yàn)橹霸O(shè)置的選項(xiàng)被保存在objectId所引用的對象中坤次, 一旦我們重新綁定這個(gè)對象到GL_WINDOW_TARGET位置,這些選項(xiàng)就會重新生效

? ??????使用對象的好處:

? ? ? ? 我們可以定義多個(gè)對象斥赋,每個(gè)對象都可以是不同的設(shè)置缰猴。在我們執(zhí)行一個(gè)使用OpenGL狀態(tài)的操作的時(shí)候,只需要綁定含有需要的設(shè)置的對象即可疤剑。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滑绒,一起剝皮案震驚了整個(gè)濱河市闷堡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蹬挤,老刑警劉巖缚窿,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異焰扳,居然都是意外死亡倦零,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門吨悍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扫茅,“玉大人,你說我怎么就攤上這事育瓜『叮” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵躏仇,是天一觀的道長恋脚。 經(jīng)常有香客問我,道長焰手,這世上最難降的妖魔是什么糟描? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮书妻,結(jié)果婚禮上船响,老公的妹妹穿的比我還像新娘。我一直安慰自己躲履,他們只是感情好见间,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著工猜,像睡著了一般米诉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上篷帅,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天拧咳,我揣著相機(jī)與錄音撼班,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鼻听,可吹牛的內(nèi)容都是我干的裳朋。 我是一名探鬼主播火本,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼祟印,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掉房,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤茧跋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后卓囚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘾杭,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年哪亿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粥烁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蝇棉,死狀恐怖讨阻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情篡殷,我是刑警寧澤钝吮,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站板辽,受9級特大地震影響奇瘦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜劲弦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一链患、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瓶您,春花似錦、人聲如沸纲仍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郑叠。三九已至夜赵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乡革,已是汗流浹背寇僧。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沸版,地道東北人嘁傀。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像视粮,于是被迫代替她去往敵國和親细办。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

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