OpenGL ES _ 入門_01
OpenGL ES _ 入門_02
OpenGL ES _ 入門_03
OpenGL ES _ 入門_04
OpenGL ES _ 入門_05
OpenGL ES _ 入門練習_01
OpenGL ES _ 入門練習_02
OpenGL ES _ 入門練習_03
OpenGL ES _ 入門練習_04
OpenGL ES _ 入門練習_05
OpenGL ES _ 入門練習_06
OpenGL ES _ 著色器 _ 介紹
OpenGL ES _ 著色器 _ 程序
OpenGL ES _ 著色器 _ 語法
OpenGL ES_著色器_紋理圖像
OpenGL ES_著色器_預處理
OpenGL ES_著色器_頂點著色器詳解
OpenGL ES_著色器_片斷著色器詳解
OpenGL ES_著色器_實戰(zhàn)01
OpenGL ES_著色器_實戰(zhàn)02
OpenGL ES_著色器_實戰(zhàn)03
為什么要學習本節(jié)內(nèi)容!
如果你對3D繪圖,或者游戲領域 或者 AR 或者VR 感興趣,本節(jié)的內(nèi)容請認真閱讀!這只是個開始!
學習目標
1.了解視圖的基本概念
2.學會控制模型在三維空間的變化
3.將模型投影到屏幕中去
4.組合多種變化
5.學會使用逆變換
場景描述:
我們在現(xiàn)實生活中,要觀察一個物體,首先你的眼睛就是一個觀察點,你的眼球能夠觀察多少的角度,還有你能看見多遠的物體,你的周圍有很多物體,他們有自己的位置坐標和旋轉(zhuǎn)方向,等等情況,我們在手機中是如何確定這些參數(shù)呢?接下來,我會一個個分析解釋…走著瞧!!
分析:
計算機圖形的要點就是如何將一個三維物體變成二維圖像,這個搞清楚了,就OK了,那么我們應該怎么辦呢?首先,你需要創(chuàng)建在自己大腦中創(chuàng)建一個一個三維的坐標系,先不要管這個三維坐標系怎么顯示在計算機或者手機的界面上去,像素問題以后說,接下來,我們把一個物體的三維坐標系變換為屏幕中的像素坐標。
步驟:
1.變換包括模型,視圖和投影操作,他們是由矩陣乘法表示,這些操作包括,旋轉(zhuǎn),移動,縮放,反射,正投影(吃過漢堡嗎)和透視投影(見過金字塔嗎?)。
2.場景實在一個矩陣中渲染的,你不知道矩陣,你見過房間嗎?加入房間沒有窗戶,你待在房間,只能看見房間里面的東西
3.經(jīng)過變化的坐標和屏幕像素之間必須建立對應關系,這個過程叫做視口變換。
上面的過程再看一遍,接下來,開始做任務了。
任務1 學會照相的步驟
照相步軸:
1.把照相機固定在三角架上,并讓它對準場景(視圖變換)
2.把場景中的物體擺放到合適的位置(模型變換)
3.旋轉(zhuǎn)照相機鏡頭,調(diào)節(jié)放大倍數(shù)(投影變化)
4.最終確定圖片的大小(窗口變換)
好,記住這個過程,任務一就完成了。接下來的任務就是對每個步驟詳細理解,加深記憶!!
提示:視圖變換必須在模型變換之前,但是投影變換和窗口變換可以在繪圖之前。
任務2 理解視圖變換
視圖變換相當于把照相機固定在三角架上,并讓它對準場景。
在使用的時候注意的一些步驟:
在指定視圖變換之前,需要使用glLoadIdentity() 將當前矩陣設置為單位矩陣,這個步驟是非常必要的,因為大多數(shù)矩陣變換把當前矩陣與指定矩陣進行乘法運算,然后將結(jié)果指定為當前矩陣,如果沒有加載單位矩陣來清除當前矩陣,那它下次進行的變換實際就是把當前矩陣和上次變換進行了組合。
默認值:
默認情況下,攝像頭位于原點,方向為z軸的負方向。
任務3 理解模型變換
模型變換的目標是設置模型的位置和方向,可以進行的操作有旋轉(zhuǎn),移動和縮放,可以是這幾種操作的任意組合。
任務4 理解投影變換
投影變換的目的是,確定視野(或視景體),好比我們照相時更換鏡頭,換了鏡頭,我們通過照相機看到的視野就不一樣了。
投影變換的兩種選擇:
1.透視投影:類似我們在生活中看物體,將物體靠近,物體變大,將物體,放遠點,我們就覺得它小。
2.正投影:物體的大小永遠不變,不管離我們遠近
在設置投影變換之前我們還需要做一下下面的工作:
1.需要將當前矩陣設置為投影矩陣:
glMatrixMode(GL_PROJECTION)
2.將當前矩陣初始化為單位矩陣
glLoadIdentity()
3.設置投影變換的類型和參數(shù)
如果是透視投影:使用
glFrustum()
如果是正投影使用 glortho()
任務5 視口轉(zhuǎn)換
投影變換和視口變換共同決定了場景是如何映射到計算機屏幕中去的。投影變換指定了映射發(fā)生機制,視口變化決定了場景所映射的有效屏幕區(qū)域的形狀。可以把視口看做是照片的大小和位置,照片可以進行縮放吧!使用函數(shù) glViewport()
以上的任務完成后,你將對視圖進行了初步了解,下篇我會進行代碼實訓講解!敬請關注!