CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  图形处理/算法

opengl 保存当前矩阵的问题 求高人

楼主beyond8820(beyond8820)2004-12-03 10:52:32 在 VC/MFC / 图形处理/算法 提问

我在做三维图形的旋转和平移的时候发现一个问题  
  将三维图形旋转一定角度,显示为三维图形,但是做平移的时候,就转为二维图形然后再平移  
  我想把旋转后的图形保存,然后将这个图形以三维的形式进行平移,程序如下:  
  void   COpenGLPlatView::OnDraw(CDC*   pDC)  
  {  
  COpenGLPlatDoc*   pDoc   =   GetDocument();  
  ASSERT_VALID(pDoc);  
  wglMakeCurrent(pDC->GetSafeHdc(),   m_hRC);  
   
  glClearColor(1,1,1,0);  
  glClear(GL_COLOR_BUFFER_BIT);  
   
  glLoadIdentity();  
   
  glTranslated(0.0,   0.0,   0.0);  
   
   
  //旋转角度  
  if(m_bRotate==TRUE)  
  {  
  glPopMatrix();  
  glMatrixMode(GL_MODELVIEW);//把后面的矩阵操作施加于造型视图矩阵栈    
  glRotatef(xrof,1.0f,0.0f,0.0f);//x轴  
  glRotatef(yrof,0.0f,1.0f,0.0f);//y轴  
  glRotatef(zrof,0.0f,0.0f,1.0f);//z轴  
  glPushMatrix();  
   
  }  
  if(m_bMove==TRUE)  
  {  
  glPopMatrix();  
  glMatrixMode(GL_MODELVIEW);//把后面的矩阵操作施加于造型视图矩阵栈  
  glTranslated(xmove,   ymove,   0.0);  
  glPushMatrix();  
   
  }  
                    ...............  
  }  
  我想每次进行一次矩阵操作后,就把结果压入矩阵栈中,然后进行下一次操作的时候,再把前面压入的矩阵弹出来,但是上面的程序不能实现这个效果  
  怎么办???  
  问题点数:0、回复次数:9Top

1 楼qiuyejun(秋叶君)回复于 2004-12-03 10:59:38 得分 0

这个用法有点意思,不过如果你是想要回复初始状态,只要使用glLoadIdentity就可以了。Top

2 楼syy64(太平洋)回复于 2004-12-03 11:14:40 得分 0

因为每次你重画时矩阵栈已被置单位阵了。Top

3 楼beyond8820(beyond8820)回复于 2004-12-03 11:37:39 得分 0

呵呵。就是不想恢复初始状态才用glPopMatrix()和glPushMatrix()Top

4 楼beyond8820(beyond8820)回复于 2004-12-03 11:45:36 得分 0

可是我在move和rotate   操作的时候,就把操作的结果矩阵压入栈里啊。即使重画时重置了单位矩阵,那用glPopMatrix()不可以把单位矩阵前的结果矩阵弹出来吗Top

5 楼syy64(太平洋)回复于 2004-12-03 13:50:11 得分 0

放在onDraw不合适吧,因为有无数次这些操作。Top

6 楼Tieren_love(甜蜜程序员)回复于 2004-12-03 15:08:42 得分 0

可能的错误:  
  1.   再OnDraw()中绘图不合适。  
  2.   Rotate时使用的矩阵可能是上次Move压入的,而Move使用的矩阵也可能是上次Rotate压入的,这样导致混乱。  
   
      如果还是不行就发给我看看,也许我能解决。  
      Tieren_love@163.comTop

7 楼beyond8820(beyond8820)回复于 2004-12-03 16:31:56 得分 0

给点建议吧Top

8 楼syy64(太平洋)回复于 2004-12-04 21:48:23 得分 0

未收到邮件。Top

9 楼beyond8820(beyond8820)回复于 2004-12-06 09:00:45 得分 0

太平洋,我换了信箱,又发了一次Top

相关问题

  • 关于矩阵的问题(OpenGL)
  • 高分求救:字符串、矩阵等等的数据的保存
  • OpenGL绘图如何保存?
  • OpenGL绘图如何保存?
  • 矩阵运算
  • 矩阵问题!!!
  • 矩阵转置
  • 关于保存当前视图?
  • 如何保存当前屏幕图像?
  • MFC中的OpenGL图像保存功能

关键词

  • 矩阵
  • 图形
  • 平移
  • glpopmatrix
  • 三维
  • glpushmatrix
  • glrotatef
  • 旋转
  • 操作
  • ondraw

得分解答快速导航

  • 帖主:beyond8820

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo