关于OpenGL中几点看似扯淡的说法. 解释得清楚的话我将提交FAQ.

scutcs 2006-02-25 06:14:45
1,世界坐标系是始终固定不变的,模型变换是在世界坐标系中进行的.
====我试问既然在世界坐标系中进行所谓模型变换,又怎么能不改变世界坐标系?

2,glRotate,glTranslate两个函数分别表示旋转与平移,且都可分别用于视点变换与模型变换中.
====既然模型变换在世界坐标系中进行,那么glRotate,glTranslate这两个函数什么时候改变了世界坐标系了,我试了很多例程,从来都是在改变视点坐标系.

3,glPushMatrix函数表示将所有矩阵依次压入堆栈中,顶部矩阵是第二个矩阵的备份;
voidglPopMatrix(void);函数表示弹出堆栈顶部的矩阵,令原第二个矩阵成为顶部矩阵;
====前面的压入栈中是一次性压入所有,而后面的弹出是一次调用弹出一个?这二者不必成对出现了?
"顶部矩阵是第二个矩阵的备份;"这句话中的第二个矩阵又作何解释?

4,由于OpenGL中的命令都是通过矩阵来实现的,而命令最终要到达图形的顶点才能起到作用,因此Opengl执行命令的实际顺序将与程序员的代码出现顺序相反.
====这句也很有问题,假设平移,旋转,缩放三个命令依次紧连着出现,对应矩阵分别为A,B,C,顶点坐标为V.那么,谁知道矩阵什么时候与V相结合?执行顺序一定是:缩放,旋转,平移吗?

----------上述四点是我从一本著名的OGL书上找出的,相信大家也都看过,书名就不说了------
请先假设(实际上我也认为)书上说的全是对的,来考虑这几个问题.可以只答某一个或几个.
大家解释得清楚的话我将提交FAQ,也算是很有释疑的作用了.谢谢.
...全文
124 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
scutcs 2006-02-28
  • 打赏
  • 举报
回复
又是快乐八八八,多谢.
我再仔细想想.
寻开心 2006-02-27
  • 打赏
  • 举报
回复
1 坐标系和坐标系之间可以有相互变换的关系,但是坐标系本身是固定不变,坐标系就是坐标系
变化的是模型在坐标系当中的位置坐标
2 视点在世界坐标系下也是一个普通的点,和模型的点没有区别
所以那两个函数可以对他们进行变化
当然从world坐标到视坐标系的变换是另外的一个问题
之所以要对视点做变换特殊强调,那是想告诉你如何控制相机或者视点的运动的
3 只能理解为操作方便,一个标准的栈只有一个栈顶指针
为了操作方便,把第二个元素的指针也记录下来,如何不可?
当你把栈顶弹走了,原来的第二个,自然就变成了第一个了
4 矩阵堆栈在哪里呢,就可以理解了
push matrix1, push matrix2, ..., push maxtrix n
使用的时候
pop matrix n, ....., pop matrix 1
这个也是opengl当中矩阵乘法串连的顺序, 从左到右依次相乘,最后乘以顶点
等价于从右到左依次来变换顶点


大专家 向老 是谁?
我谁也不认,只认opengl的规范 呵呵
syy64 2006-02-26
  • 打赏
  • 举报
回复
1、2、3谁说的?其实并不复杂的问题复杂化了;
4、是这样的。
scutcs 2006-02-26
  • 打赏
  • 举报
回复
呵呵,SYY64一定要我说啊,大专家向老说的.

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧