{
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-7566-3.html
人家做生意上来先给你个大金戒指
也应该鼓励三两大龄剩女合嫁一夫
还好了好多话