用MFC做了一个小程序,大致功能是先显示一个读入的图形,然后在条件变化时显示另一个图形,最初的显示是正常的,然后消息处理函数也没问题,自定义了一个draw函数如下
void CReadView::Draw(){
glClearColor(1.0, 1.0,1.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glEnable(GL_COLOR_MATERIAL);
glLoadIdentity(); // Reset The Current Modelview Matrix
glTranslatef(-1.5f, 0.0f, -6.0f);//物体左移1.5,向内移6,相当于移动镜头一样,让物体进入镜头中
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_TRIANGLES); // 绘制三角形(逆时针画出来的三角形才是正面朝着我们的)
glVertex3f(-1.0, -1.0, 0.0); // 左下顶点(//glVertex 的第一个参数是X坐标,然后依次是Y坐标和Z坐标)
glVertex3f(1.0, -1.0, 0.0); // 右下顶点
glVertex3f(0.0, 1.0, 0.0); // 上顶点
glEnd(); // 三角形绘制结束
glColor3f(0.4, 0.75, 1.0);
glRectf(1.5f, 1.5f, 2.5f, 2.5f);
glLineWidth(3);
glBegin(GL_LINES);
glColor3f(1.0, 0.0, 0.0);
glVertex2f(3.0f, 0.0f);
glVertex2f(3.5f, 0.0f);
//在这里使用glVertex*系列函数 指定你所希望的顶点位置
glEnd();
glLineWidth(1);
glColor3f(1.0f, 1.0f, 0.0f);
glBegin(GL_LINES);
glVertex3f(-3.0f, 2.0f, 3.0f);
glVertex3f(3.0f, 1.0f, 0.0f);
glEnd();
glColor3f(1.0f,0.0f,0.0f);
glBegin(GL_LINES);
glVertex2i(1, 1);
glVertex2i(3, 3);
glEnd();
glFlush();
}
把它放到的OnDraw函数里进行调用,程序可以正常执行,只是画出来的这些线段、图形都没有颜色(是默认的黑色),也就是glColor3f似乎失效了。
这些绘制的函数都是从网上找来做测试的,在正常单独的OpenGL环境里应该也都是没问题的。是MFC的问题吗?或者是OpenGL需要某些重新的预设置?求解答