OpenGL glMatrixMode() 函數解釋與例子


概述

glMatrixMode() 用以指定當前要操作的矩陣,可選值有 GL_MODELVIEW(模型視圖,默認值),GL_PROJECTION(投影),GL_TEXTURE(紋理),GL_COLOR(顏色)

當我們使用 glMatrixMode(GL_MODELVIEW) 時,即表示我們接下來要對模型視圖矩陣堆棧進行一些操作(Applies subsequent matrix operations to the modelview matrix stack),例如位移,旋轉,縮放,亦或是是要添加一個新的圖形。

當我們使用 glMatrixMode(GL_PROJECTION) 時,即表示我們

例子

對模型視圖矩陣操作的例子

glMatrixMode(GL_MODELVIEW);
glLoadIdentity(); // 將當前所選中的模型視圖矩陣置為單位矩陣,即拋棄之前的更改
glTranslatef(ballX, ballY, 0.0f); // 對此矩陣應用位移操作
glBegin(GL_TRIANGLE_FAN);  // 開始繪制三角形扇形序列
glColor3f(1.0f, 0.0f, 0.0f);
glVertex2f(0.0f, 0.0f);
int numSegments = 100;
GLfloat angle;
for (int i = 0; i <= numSegments; i++)
{
    angle = i * 2.0f * PI / numSegments;
    glVertex2f(cos(angle) * ballRadius, sin(angle) * ballRadius); // 指定頂點
}
glEnd(); // 繪制結束

對投影矩陣操作的例子

glMatrixMode(GL_PROJECTION);
glLoadIdentity(); // 拋棄之前的更改
gluOrtho2D(clipAreaXLeft, clipAreaXRight, clipAreaYBottom, clipAreaYTop); // 設置二維正交視圖區域

參考

  1. https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glMatrixMode.xml
  2. https://stackoverflow.com/questions/4566558/why-is-there-a-glmatrixmode-in-opengl
  3. https://blog.csdn.net/jiangdf/article/details/8460012

本文亦發布在:https://iamazing.cn/article/OpenGL-glMatrixMode()-函數解釋與例子


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM