最近開始接觸opengl,雖然腦子是個好動西,但是它健忘啊。有些人,有些事,不去想它,隨著時間的推移會慢慢淡出你的腦海。知識更是如此,很快會在你的腦海裡煙消雲散,有時甚至給你提醒了一大半,還是待它如初見(豬腦子),俗話說好記性不如爛筆頭,這玩意兒還是記下來的好,雖然不知道後面會不會用到但是還可以給自己乙個可以查閱和借鑑的地方。。。
**********=== ↑↑↑↑ 羅里吧嗦一大堆 ↑↑↑↑*************** ↓↓↓↓ 下面開始正文吧 ↓↓↓↓**********===
老子反手就是一巴掌,先來了解下 opengl 是個什麼鬼東西
what is opengl
opengl 於 2023年7月 蛋(誕)生噠,還記得那是個月黑風高的。。咳 咳 。。sgl公司發布了1.0版本
1.opengl是一種應用程式程式設計介面,它是一種可以對圖形硬體裝置特性進行訪問的軟體庫
2.opengl被設計為乙個現代化的、硬體無關的介面,因此我們可以再不考慮計算機作業系統或視窗系統的前提下,在多種不同的圖形硬體系統上,或者完全通過軟體的方式實現opengl介面。
3.opengl自身並不包含任何執行視窗任務,或者處理使用者輸入的函式。
4.opengl也沒有提供任何用於表達三維物體模型,或者讀取影象檔案的操作。我們需要通過一系列的幾何圖元(點、線段、三角形、以及patch)來建立三維空間物體。
6.opengl的實現可以是軟體實現,也可以是硬體實現。
軟體實現:是對opengl函式呼叫時做出的響應並建立二位或者三維影象的函式庫。
硬體實現比軟體實現快得多! 圖 ↓
那麼了解了這些它可以用來做什麼呢
opengl es 和 opengl有啥子關係呢?(es是乙個在移動平台能夠支援opengl的最基本功能的精簡規範)
1.opengl es 是 opengl 的子集,針對 手機 pad 和遊戲主機 嵌入式裝置而設計。
2.opengl es 是從 opengl 裁剪定製而來的,去除了glbegin/glend, 四邊形(gl_quads)、多邊形(gl_polygons)等複雜圖元, 和許多非必要的特性,剩下最核心有用的部分。
opengl程式需要執行的主要操作步驟
1.從opengl的幾何圖元中設定資料,用於構建形狀;
2.使用不同的著色器對輸入的圖元資料執行計算操作,判斷位置,顏色以及其他渲染性;
3.將輸入圖元的數學描述轉為與螢幕位置對應的畫素片元,這個過程也稱為光柵化;
4.針對光柵化過程產生的每個片元,執行片元著色器,從而決定這個片元的最終顏色和位置;
5.如果有必要可以對片元執行一些額外的操作。
例如:判斷片元對應的物件是否可見,或者將片元的顏色與當前螢幕位置的顏色進行融合。
ok,至此咱和這個可惡的傢伙來個約法三章
(開發語言與程式設計約定)
我們以後見到的opengl函式多是以 gl 開頭,因為opengl的函式遵循一定的命名約定,他可以告訴我們這個函式來自於哪個函式庫,並且還可以告訴我們這個函式的引數個數和型別。
上個書寫格式:
< 函式庫字首 > < 根命令 > < 可選的引數數量 > < 可選的引數型別 >
來張**
在此我們還需要了解一下座標系與變換
1.在開發opengl程式時,需要用到兩個座標系:
乙個稱為物件座標系:(物體座標系)我們在開發中使用的座標系。
另乙個稱為世界座標系:(視窗座標系或螢幕座標系)這個座標系中的單位是畫素。
2.在繪製過程中,opengl會自動實現從物件到視窗座標系的轉換,所需要的資訊是螢幕中顯示的視窗尺寸和使用者希望顯示物件空間的大小。
3.opengl所需要的座標系變換需要兩個矩陣決定
即:模型檢視矩陣和投影矩陣,這些矩陣是opengl的狀態的一部分。
設定這兩種矩陣的典型步驟包括以下三個步驟:
1.指定我們希望修改的矩陣;
2.將矩陣設為單位矩陣;
3.修改當前矩陣為使用者期望的矩陣。
為什麼使用opengl es 呢?
直接上圖
沒有opengl時是將資料從一塊記憶體複製到另一塊記憶體的,速度比較慢,而且在記憶體複製資料時 cup 和 gpu是不能對該資料進行操作的。
有了opengl之後 可以通過 快取區來運算元據這樣可以更加有效的利用 cup和gpu。
12點了。。困死。扯呼......
類的初步認識
c 一直被稱為是比c更高階的語言,為什麼呢?恐怕就是因為具有物件導向的設計思想,它 將萬千變化 錯綜複雜的外部環境有組織的 有規律的整合在了一起。從規律上,我們引入 了類的概念,將原本複雜的外部環境按照一定的規律和相似點,劃分為不同的類,常言道 物以類聚,鳥易群分嘛。我們在將類有機的進行區別和管理 ...
程序的初步認識
程序是作業系統結構的基礎 是乙個正在執行的程式 計算機中正在執行的程式例項 可以分配給處理器並由處理器執行的乙個實體 由單一順序的執行顯示,乙個當前狀態和一組相關的系統資源所描述的活動單元。在程式的實現中,程序使用大有裨益。1.程序的建立函式 fork vfork 前者父子程序執行順序不定。2.在子...
meaurespec的初步認識
首先,每個iew的meaurespec的模式不是預設就設定好的,而是根據這個view的寬度跟高度的設定跟父容器viewgroup的spec設定來匹配的 我們來看匹配規則 寬高設定分為三種 具體的寬高,warp cortent,match patents 如果view採用固定寬高,也就是寫死的數值那種...