dlut_ppp
dlut_ppp
采纳率0%
2020-01-02 16:37 阅读 324

OpenGL绘图颜色设置无效(MFC环境下)

5

用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需要某些重新的预设置?求解答

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • dabocaiqq dabocaiqq 2020-01-02 22:53
  • lty2017 lty2017 2020-01-02 18:56

    把头两行clear注释掉试一下

    点赞 评论 复制链接分享

相关推荐