日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

OpenGl的glMatrixMode()函数理解

發布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenGl的glMatrixMode()函数理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/jiangdf/article/details/8460012

glMatrixMode()函數的參數,這個函數其實就是對接下來要做什么進行一下聲明,也就是在要做下一步之前告訴計算機我要對“什么”進行操作了,這個“什么”在glMatrixMode的“()”里的選項(參數)有3種模式: GL_PROJECTION 投影, GL_MODELVIEW 模型視圖, GL_TEXTURE 紋理.

如果參數是GL_PROJECTION,這個是投影的意思,就是要對投影相關進行操作,也就是把物體投影到一個平面上,就像我們照相一樣,把3維物體投到2維的平面上。這樣,接下來的語句可以是跟透視相關的函數,比如glFrustum()或gluPerspective();

在操作投影矩陣以前,需要調用函數:

glMatrixMode(GL_PROJECTION); //將當前矩陣指定為投影矩陣

然后把矩陣設為單位矩陣:
glLoadIdentity();
然后調用glFrustum()或gluPerspective(),它們生成的矩陣會與當前的矩陣相乘,生成透視的效果;


如果參數是GL_MODELVIEW,這個是對模型視景的操作,接下來的語句描繪一個以模型為基礎的適應,這樣來設置參數,接下來用到的就是像gluLookAt()這樣的函數;
若是GL_TEXTURE,就是對紋理相關進行操作
順便說下,OpenGL里面的操作,很多是基于對矩陣的操作的,比如位移,旋轉,縮放,所以,這里其實說的規范一點就是glMatrixMode是用來指定哪一個矩陣是當前矩陣,而它的參數代表要操作的目標,GL_PROJECTION是對投影矩陣操作,GL_MODELVIEW是對模型視景矩陣操作,GL_TEXTURE是對紋理矩陣進行隨后的操作。

切換當前矩陣.
如.要使用透視(3D).那么先要設置透視投影
glMatrixMode(GL_PROJECTION); //切換到投影矩陣.
//...設置透視投影
設置完成后開始畫圖,需要切換到 模型視圖矩陣 才能正確畫圖.
glMatrixMode(GL_MODELVIEW);
// 畫一個物體A (看起來是3D的),
// 如這時候需畫一個 2D效果 的 物體A,那么又需要透視投影

glMatrixMode(GL_PROJECTION); //切換到投影矩陣..
// ..設置正交投影
//..設置完成,切換回模型視圖矩陣.....
glMatrixMode(GL_MODELVIEW);
// 再畫一個物體A (看起來是2D的)


// 如從頭到尾都是畫3D/2D, 只需初始化時設置一次.
// 如果有交替,那么就需要glMatrixMode() 切換
// 因這樣設置很煩人,所以又有glPushMatrix() 保存當前矩陣
?

總結

以上是生活随笔為你收集整理的OpenGl的glMatrixMode()函数理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。