{
auxInitDisplayMode (AUX_SINGLE | AUX_RGBA);
auxInitPosition (0, 0, 400, 400);
auxInitWindow ("Composite Modeling Transformations");
myinit ();
auxKeyFunc (AUX_LEFT, shoulderSubtract);
auxKeyFunc (AUX_RIGHT, shoulderAdd);
auxKeyFunc (AUX_UP, elbowAdd);
auxKeyFunc (AUX_DOWN, elbowSubtract);
auxReshapeFunc (myReshape);
auxMainLoop(display);
}
2013-7-23日加入:
在计算机图形学中,全部的变换都是通过矩阵相乘实现的,即物体定点构成的齐次坐标矩阵乘以三维变换矩阵就可得到变换后的物体齐次坐标矩阵。相同,在OpenGL中图远的坐标变换(移动、旋转、缩放)也是通过矩阵乘法实现的。OpenGL中比較重要的矩阵有投影矩阵和模型视图矩阵,外加纹理矩阵。矩阵堆栈基于矩阵引入,它能够以栈的形式保存相应的矩阵,压入和弹出操作同普通的栈,三种矩阵相应了三个矩阵堆栈。
实际上在创建、装入、相乘模型视图变换和投影变换矩阵时都已经用到了矩阵堆栈。拿模型视图变换来说,在绘制复杂的场景时,会涉及到复杂的模型矩阵变换,经常我们须要保存这些变换的中间状态,以便在进行一些变换后高速恢复,而无需对当前模型矩阵进行反变换以进行恢复(费时)。比方,当前模型视图矩阵状态为矩阵A,场景绘制须要模型视图矩阵从A->B,然后从A->C......。利用矩阵堆栈,程序仅仅须要保存矩阵A(glpushmatrix),运行完A->B后,恢复模式视图矩阵为A(glPopMatrix),运行变换A->C。非常显然,使用矩阵堆栈比仅使用单个矩阵效率高非常多。
代码演示样例:
[cpp]view plain
以上就是关于glpushmatrix的全部内容,相信你一定会非常满意。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shenmilingyu/article-7565-3.html
我也不是想坑你
刚好可以在那试验爆炸