怎麼學opengl(原創學好opengl走遍天下都不怕系列基礎篇)
2023-04-12 03:01:33 1
前言最近本來是想認真學習下《opengl es第三版》這本書,無奈內容過於生澀,有點看不下去,偶遇opengl-tutorial.org的翻譯教程,感覺正符合我急於實踐出真知的需求,便認真通讀了一遍該教程的基礎教程,共8個tutorials。
基礎篇主要面對初學朋友(比如豬哥),快速了解教程內容,具體細節需要自己去手動操作一遍才能體會到教程中的文字。
首先,每個初學小白或者對c 開發環境不熟悉的朋友,都需要經歷一個痛苦地搭建環境的過程。習慣用vscode(visual studio code, vs 的輕量級小弟)作為開發環境的我,經歷了一臉懵逼的配置操作後,最終還是選擇老老實實地按教程中cmake生成vs(visual studio)工程文件去調試,果然,cmake的配置還是很穩的,你只需要下載一個cmake-gui,直接按教程配置即可。
來自http://t.cn/RV5ZoBl
tutorial 2介紹著色器(Shader),頂點著色器、片段著色器。
從繪製一個三角形的角度,使用這兩個著色器渲染三角形。
來自http://t.cn/Ea8t8kZ
tutorial 3真的是基礎中的基礎了,一定要認真理解好矩陣的變換在opengl坐標轉換的作用,主要講了平移矩陣(Translation Matrix)、縮放矩陣(Scale Matrix)、旋轉矩陣(Rotation Matrix)。學過線性代數的朋友入門很快,手動算一遍!不會也要強迫自己記下來!
另一部分主要介紹了在不同的空間M(模型空間)->W(世界空間)->V(觀察空間,攝像機空間)->P(投影空間)的轉換。
模型空間->世界空間:遵循縮放->旋轉->平移
世界空間->觀察空間:設置觀察角度
觀察空間->投影空間:根據模型觀察的距離來顯示放大或縮小、遠或近的效果
來自http://t.cn/Rb3cYYH
tutorial 4主要講怎麼給一個立方體上色,由於立方體的每個面都是由三角形劃分(openGl只支持畫三角形orz...),因此通過顏色緩存通過頂點著色器去傳遞顏色,讓片段著色器去對不同頂點的顏色渲染。
PS:片段著色器的數據來源於頂點著色器傳遞,頂點著色器來源於顏色緩存。
最後討論了怎麼讓繪製的三角形不受繪製順序的影響(Z深度值),從而達到一個明確層級的效果。
>>>>
來自https://dwz.cn/Dp51TEI4
tutorial 5主要講怎麼給一個立方體貼上紋理(Texture),所謂紋理就是圖片。根據UV坐標(除了正常坐標外,還需要這個坐標)把圖片變形貼在表面上。
接著將怎麼讓紋理顯示的邊界毛刺弄得更加順滑合理,主要介紹了線性過濾、各向異性過濾、Mipmaps三種方法。
最後討論了壓縮紋理,提高了處理紋理的效率!
來自http://sina.lt/fXCP
tutorial 6主要講怎麼處理鍵盤滑鼠事件,並且利用不同的事件來控制顯示不同角度的模型。
講述了每一幀繪製時,位置應該怎麼合理變化。
最後,因放大模型導致穿透到模型內部的問題,介紹了GPU檢查攝像機與三角形前後位置關係的方法(反轉法線)。
來自http://sina.lt/fXCN
tutorial 7
將怎麼將hardcode(硬編碼,寫死的數據)的模型換成使用Blender工具導出模型。
來自http://sina.lt/fXCM
tutorial 8
介紹了光照對著色的影響,不同的光照和材質會有不一樣的著色效果,用到了頂點法線(頂點所有面的法線均值)。
來自http://sina.lt/fXCK
QA訪問不到網址怎麼辦?可以訪問相關的github倉庫哦 >> http://sina.lt/fXCR
怎麼學習opengl?實踐,耐心,有編程基礎的可以入門快,沒線性代數基礎的可以補!
學習過程中有問題,怎麼解決?首先谷歌百度奉上,其次再有問題(思考過無法解決的問題),可以聯繫我[email protected]!踩坑經驗奉上!
看到這裡不妨添加微信搜索公眾號《虛幻技術美術》,或關注頭條號的我~
虛幻技術美術,用心服務遊戲
,