OpenGL筆記之一 開學

2021-08-26 15:22:01 字數 980 閱讀 8877

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 registry:包含opengl各版本的規範和擴充套件。

Kinect學習筆記之(一)開發環境配置

email 809315756 qq.com 我的kinect開發平台是 windows10 kinect2.0 visualstudio2019 opencv4.5,具體安裝配置步驟如下 安裝成功後可以看到 kinect插電後,電源介面卡指示燈為黃色,當kinect通過usb與電腦連線後,電源介面...

OpenGL學習筆記之一 什麼是OpenGL

opengl到底是什麼?制定並維護的規範 specification opengl規範嚴格規定了每個函式該如何執行,以及它們的輸出值。至於內部具體每個函式是如何實現 implement 的,將由opengl庫的開發者自行決定 譯註 這裡開發者是指編寫opengl庫的人 因為opengl規範並沒有規定...

VINS學習筆記之一 開篇,從vio標定開始

今天是庚子鼠年臘月二十九,也是今年的最後乙個工作日,大部分同事都回家了或在回家的路上了,無心幹活,那就幹點自己喜歡的事情吧 imu parameters可以追蹤了解imu內參是如何使用的,進而深入了解imu 內參的精度是如何影響vio的精度的。optimization parameters可以追蹤是...