2
當在紅皮書中重塑的例子來看,我通常會找到這樣的:爲什麼重塑代碼以glMatrixMode(GL_MODELVIEW)結束?
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
glMatrixMode(GL_MODELVIEW);
}
據我所知,調用glMatrixMode(GL_PROJECTION);
其次glLoadIdentity();
重置投影矩陣,但我不明白爲什麼glMatrixMode(GL_MODELVIEW)
通常稱爲在重塑結束。
在這個特殊的例子glFrustum
影響投影矩陣,對嗎?爲什麼後面調用GL_MODELVIEW
?如果最後一次致電glMatrixMode(GL_MODELVIEW)
被忽略,它會有所作爲嗎?
如果最後一次調用glMatrixMode(GL_MODELVIEW)被忽略,它會有所作爲嗎? – andandandand 2010-11-22 00:26:56
是的 - 除非你把它放在別的地方。基本上大部分的矩陣運算都是在模型視圖矩陣上完成的(投影矩陣只能在每個窗口調整大小,或者每次運行一次),所以您希望模型視圖矩陣堆棧成爲活動矩陣堆棧(即受所有矩陣調用)。這就是爲什麼趨勢是「如果你想修改其他矩陣堆棧,然後打開它,做你的東西,並恢復到模型視圖」。 – Kos 2010-11-22 00:33:03