OpenGL(一)基礎知識

2021-09-02 01:20:37 字數 1249 閱讀 5527

opengl,opengl es ,metal等,今天先說opengl。

opengl是跨平台的,在xcode中可以用c++來寫(對於乙個入行就開始做ios的我來說,學習一門新的語言也是一道坎!!!)

opengl其實更多的是操作gpu(cpu20%的運算,80%的邏輯業務。gpu是100%的運算。cpu是在多調執行緒中來回迅速切換,以此來實現多執行緒。而gpu本身就可以實現多執行緒運算)

opengl與opengl es的區別在於:opengl es主要針對嵌入式裝置使用,被簡話的opengl。

在了解opengl之前,先了解一些術語:

光柵化:實際繪製/填充每個頂點之間的畫素形成執行緒。(通俗的講,就是根據**繪製成畫素讓我們開到的過程)

著色:沿著頂點之間改變顏色值,能夠強送建立光照乙個立方體的效果。

紋理貼圖:將一張附著到繪製的影象上。

混色:顏色混合效果。

座標系:2d,3d。

圖元:組成影象的基本單元。

glsl:專門為圖形開發設計的程式語言。

渲染管線:頂點資料-->頂點著色器-->細分著色器-->幾何著色器-->圖元設定-->剪下-->光柵化-->片元著色器-->效果。一套流程就為管線。

這裡頂點著色器為必要的,細分和幾何是可選的(90%的可能用不到),片元著色器必選。

上面說了管線,其實opengl在最開始給了我們乙個固定管線,只需要傳進來引數就可以解決問題。但是這並不能滿足很多東西,特別是航空,軍事,醫療方面,所以就有了一套語言glsl和可程式設計管線。

理論知識完了,先段**理解下:

這個方法是改變視窗大小,注意前面2位0,0是座標原點,這裡和ios不一樣,ios的座標原點在左上,這裡是左下!

void changesize(int w,int h) {

glviewport(0,0, w, h);

void setuprc() 為程式作一次性的設定,如果是乙個固定的圖形,可以直接把座標繫放裡面。這裡還有初始化著色器等等

int main(int argc,char* argv) 很多初始化的東西可以放在這裡面,這裡不詳細說裡面的東西,下面有**有注釋,可以看!

void renderscene(void) 真正開始渲染的地方是這裡!

void speacialkeys(int key, int x, int y) 特殊按鍵處理!目前我們先處理的都是方向鍵!轉**形!

上面的方法名除了main,其他都是可以更改的,但是引數是不能更改的!今天的**只為理解初步使用!

**

OpenGL基礎知識(一)

一 opengl是什麼?1 opengl是一種應用程式程式設計介面,它是一種可以對圖形硬體裝置特性進行訪問的軟體庫。2 opengl被設計為乙個現代化的 硬體無關的介面,因此我們可以在不考慮計算機作業系統或視窗系統的前提下,在多種不同的圖形硬體系統上,或者完全通過軟體的方式實現opengl介面。3 ...

OpenGL基礎知識 三

今天講一下如何在opengl中繪製一些簡單的圖形。現在把opengl基礎知識 二 中編寫的程式做一下簡單的修改,源 如下 include void renderscene void 當視窗大小變化時呼叫 void changesize glsizei w,glsizei h int main int...

OpenGL基礎知識 五

opengl狀態機 在opengl中使用狀態機的機制去儲存opengl當前的狀態。所謂的opengl狀態機也就是一組opengl的狀態集合。有一些狀態可以開啟或關閉,可以通過glenable glenum capability 函式進行開啟,gldisable glenum capability 對...