OpenGL筆記之一 開學
OpenGL
OpenGL本身並不是一個API,==它僅僅是一個由Khronos組織制定並維護的規範==。OpenGL規範嚴格規定了每個函式該如何執行,以及它們的輸出值。至於內部具體每個函式是如何實現的,將由OpenGL庫的開發者自行決定。(這裡開發者是指編寫OpenGL庫的人,實際的OpenGL庫的開發者通常是顯示卡的生產商。)
因為OpenGL規範並沒有規定實現的細節,具體的OpenGL庫允許使用不同的實現,只要其功能和結果與規範相匹配。這也意味著任何時候OpenGL庫表現的行為與規範規定的不一致時,基本都是庫的開發者留下的bug。
有興趣的讀者可以找到OpenGL3.3的規範文件。
核心模式與立即渲染模式
早期的OpenGL使用立即==渲染模式==,這個模式下繪製圖形很方便,但是效率太低。因此從OpenGL3.2開始,規範文件開始廢棄立即渲染模式,並鼓勵開發者在OpenGL的==核心模式==(Core-profile)下進行開發。
擴充套件
OpenGL的一大特性就是對擴充套件的支援,當一個顯示卡公司提出一個新特性或者渲染上的大優化,通常會以==擴充套件==的方式在驅動中實現。
如果一個程式在支援這個擴充套件的顯示卡上執行,開發者可以使用這個擴充套件提供的一些更先進更有效的圖形功能。通過這種方式,開發者不必等待一個新的OpenGL規範面世,就可以使用這些新的渲染特性了,只需要簡單地檢查一下顯示卡是否支援此擴充套件。
狀態機
OpenGL自身是一個巨大的==狀態機==:一系列的變數描述OpenGL此刻應當如何執行。OpenGL的狀態通常被稱為OpenGL==上下文==。我們通常使用如下途徑去更改OpenGL狀態:設定選項,操作緩衝。最後,我們使用當前OpenGL上下文來渲染。
物件
OpenGL庫是用==C語言==寫的,同時也支援多種語言的派生,但其核心仍是一個C庫。由於C的一些語言結構不易被翻譯到其它的高階語言,因此OpenGL開發的時候引入了一些抽象層。“物件(Object)”就是其中一個。
在OpenGL中一==個物件==是指一些選項的集合,它代表OpenGL狀態的一個子集。(類似於C語言的結構體)
附加資源
- opengl.org:OpenGL官方網站。
- OpenGL registry:包含OpenGL各版本的規範和擴充套件。
相關文章
- OpenGL系列教程之一:OpenGL(轉)
- Android OpenGL 學習筆記Android筆記
- OpenGL學習筆記(12)基本光照筆記
- 讀書筆記之一筆記
- OpenGL ES 2 0 (iOS) 筆記大綱iOS筆記
- MySQL學習筆記之一MySql筆記
- Java學習筆記之一Java筆記
- 開學考試
- 開學典禮
- Android OpenGL ES學習筆記之概要Android筆記
- loadRunder培訓筆記之一筆記
- 開學日誌3
- 開學日誌4
- 開學日誌5
- [隨想]9.3-9.4開學考遊記&覆盤
- Laravel 使用筆記之一 訪問器Laravel筆記
- R語言學習筆記之一R語言筆記
- STL的學習筆記之一 (轉)筆記
- Java相關課程系列筆記之一Java學習筆記Java筆記
- 工作筆記之一 array_fill_keys ()筆記
- mssql最佳化學習筆記之一SQL筆記
- 《卸甲筆記》-單行函式對比之一筆記函式
- Hadoop學習筆記之一 : HDFS原理二Hadoop筆記
- Hadoop學習筆記之一 : HDFS原理一Hadoop筆記
- C++程式設計思想筆記之一 (轉)C++程式設計筆記
- 《深入淺出MFC》學習筆記之一 (轉)筆記
- Opengl ES之踩坑記
- hive學習筆記之一:基本資料型別Hive筆記資料型別
- 數字人粒子系統學習筆記之一筆記
- 深度學習筆記之一些基本術語深度學習筆記
- Flutter筆記——幀繪製系列之一(原始碼學習)Flutter筆記原始碼
- Object C學習筆記7-字串NSString之一Object筆記字串
- OneNote是最好的筆記本且沒有之一筆記
- Data Warehouse Guide閱讀筆記(八):materialized view之一GUIIDE筆記ZedView
- 黑馬程式設計師java筆記之一-----Map集合程式設計師Java筆記
- 設計模式(Design Patterns)筆記之一:Abstract Factory (轉)設計模式筆記
- OpenGL/OpenGL ES 初探
- 三思筆記之一步一步學ORACLE筆記Oracle