OpenGL中的glPushMatrix()和glPopMatrix()函數用于操作矩陣棧頂的矩陣。
當前矩陣是指通過glMatrixMode()函數設置的當前矩陣模式(GL_MODELVIEW或GL_PROJECTION)下的矩陣。
壓入棧頂后,當前矩陣被復制到新的棧頂位置。
彈出后,矩陣棧頂的下一個矩陣成為新的棧頂,并成為當前矩陣。
如果彈出后矩陣棧為空,則當前矩陣被設置為單位矩陣。
這兩個函數通常是一起使用的,用于保存和恢復矩陣狀態,例如在進行多個變換操作后,恢復到最初的狀態。
示例代碼:
// 在OpenGL渲染循環的開始部分,保存初始狀態
glMatrixMode(GL_MODELVIEW); // 設置當前矩陣模式為模型視圖矩陣
glPushMatrix(); // 保存當前模型視圖矩陣
// 執行變換操作
glLoadIdentity(); // 將當前模型視圖矩陣設置為單位矩陣
glTranslatef(0.0f, 0.0f, -5.0f); // 平移變換
// 繪制物體
// ...
// 恢復初始狀態
glPopMatrix(); // 恢復之前保存的模型視圖矩陣
這樣,在每次渲染循環中,通過glPushMatrix()和glPopMatrix()函數,可以保證每次繪制物體時都使用初始狀態的矩陣,并在變換操作完成后恢復到初始狀態。