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各版本的規範和擴充套件。
相關文章
- MySQL學習筆記之一MySql筆記
- OpenGL系列教程之一:OpenGL(轉)
- 數字人粒子系統學習筆記之一筆記
- hive學習筆記之一:基本資料型別Hive筆記資料型別
- Flutter筆記——幀繪製系列之一(原始碼學習)Flutter筆記原始碼
- Laravel 使用筆記之一 訪問器Laravel筆記
- 工作筆記之一 array_fill_keys ()筆記
- Laravel 學習筆記之一:備份資料以及資料填充Laravel筆記
- Android 開發學習筆記Android筆記
- OpenGL 學習 01 Mac 搭建 OpenGL 環境Mac
- springboot 開發學習筆記1Spring Boot筆記
- QCustomPlot開啟opengl
- [OpenGL]VS2010配置OpenGL開發環境開發環境
- 從零開始學Electron筆記(六)筆記
- 從零開始學Electron筆記(七)筆記
- 從零開始學Electron筆記(二)筆記
- 從零開始學Electron筆記(四)筆記
- 從零開始學Electron筆記(五)筆記
- 從零開始學Electron筆記(一)筆記
- 從零開始學Electron筆記(三)筆記
- NDK學習筆記-NDK開發流程筆記
- Web開發學習筆記——HTTP 概述Web筆記HTTP
- JS開發步驟學習筆記JS筆記
- numpy的學習筆記\pandas學習筆記筆記
- Opengl ES之踩坑記
- Android API開發之OpenGL開發之Android OpenGL STL詳解AndroidAPI
- dubbo學習筆記---dubbo開發實戰筆記
- 開通個人學習隨筆記錄筆記
- 學習筆記筆記
- 力學筆記筆記
- 哲學筆記筆記
- 數學筆記筆記
- Java_EE企業級開發學習筆記——spring學習筆記第二章Java筆記Spring
- Android 開發藝術探索筆記之一 -- Android 的生命週期和啟動模式Android筆記模式
- Gitlab自動部署之一:阿里雲安裝Gitlab筆記Gitlab阿里筆記
- 從零開始學習OpenGL-14複習光照
- OpenGL 學習 04 圖元
- 【學習筆記】數學筆記