标签:opengl opengl+mfc 单文档 图形
刚学OpenGL,我试着用MFC把我 做的OpenGL程序整理成一个带有菜单单文档的形式,点击不同的菜单会弹出不同的图形
下面我把我程序中出现的小问题说一下
/*绘制三维球、棱锥、棱柱*/
void CXXXView::wireQuadSurfs()
{
glMatrixMode(GL_PROJECTION);
glOrtho(-2.0, 2.0, -2.0, 2.0, 0.0, 5.0);
gluLookAt(2.0, 2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glColor3f(0.0, 0.0, 1.0);
glPushMatrix();
glTranslatef(1.0, 1.0, 0.0);
glutWireSphere(0.75, 8, 6);
glPopMatrix();
glPushMatrix();
glTranslated(1.0, -0.5, 0.5);
glutWireCone(0.7, 2.0, 7, 6);
glPopMatrix();
GLUquadricObj
*cylinder;
glPushMatrix();
glTranslatef(0.0, 1.2, 0.8);
cylinder = gluNewQuadric();
gluQuadricDrawStyle(cylinder, GLU_LINE);
gluCylinder(cylinder, 0.6, 0.6, 0.5, 6, 4);
glPopMatrix();
glFlush();
}
这是我的部分代码,主要是画球·棱锥· 棱柱的。
运行后:
点击图中菜单选项
出现结果:
在弹出菜单,重复上述步骤:
可以发现每次运行结果都不一样,经过我的实验得出是因为每次运行时
glMatrixMode(GL_PROJECTION);
glMatrixMode(GL_MODELVIEW);
这两个函数都被执行一次,
这里说一下glMatrixMode(mode)函数参数的作用
glLoadIdentity():将当前的用户坐标系的原点移到了屏幕中心:类似于一个复位操作
在glLoadIdentity()之后我们为场景设置了透视图。glMatrixMode(GL_MODELVIEW)设置当前矩阵为模型视图矩阵,模型视图矩阵储存了有关物体的信息。加上这个函数之后就不会产生那种情况了。
版权声明:本文为博主原创文章,未经博主允许不得转载。
OpenGL+MFC对glMatrixMode(),glLoadIdentity()的理解
标签:opengl opengl+mfc 单文档 图形
原文地址:http://blog.csdn.net/tan_handsome/article/details/47398697