关于OpenGL中几点看似扯淡的说法. 解释得清楚的话我将提交FAQ.
1,世界坐标系是始终固定不变的,模型变换是在世界坐标系中进行的.
====我试问既然在世界坐标系中进行所谓模型变换,又怎么能不改变世界坐标系?
2,glRotate,glTranslate两个函数分别表示旋转与平移,且都可分别用于视点变换与模型变换中.
====既然模型变换在世界坐标系中进行,那么glRotate,glTranslate这两个函数什么时候改变了世界坐标系了,我试了很多例程,从来都是在改变视点坐标系.
3,glPushMatrix函数表示将所有矩阵依次压入堆栈中,顶部矩阵是第二个矩阵的备份;
voidglPopMatrix(void);函数表示弹出堆栈顶部的矩阵,令原第二个矩阵成为顶部矩阵;
====前面的压入栈中是一次性压入所有,而后面的弹出是一次调用弹出一个?这二者不必成对出现了?
"顶部矩阵是第二个矩阵的备份;"这句话中的第二个矩阵又作何解释?
4,由于OpenGL中的命令都是通过矩阵来实现的,而命令最终要到达图形的顶点才能起到作用,因此Opengl执行命令的实际顺序将与程序员的代码出现顺序相反.
====这句也很有问题,假设平移,旋转,缩放三个命令依次紧连着出现,对应矩阵分别为A,B,C,顶点坐标为V.那么,谁知道矩阵什么时候与V相结合?执行顺序一定是:缩放,旋转,平移吗?
----------上述四点是我从一本著名的OGL书上找出的,相信大家也都看过,书名就不说了------
请先假设(实际上我也认为)书上说的全是对的,来考虑这几个问题.可以只答某一个或几个.
大家解释得清楚的话我将提交FAQ,也算是很有释疑的作用了.谢谢.