dlut_ppp 2020-01-02 16:37 采纳率: 0%
浏览 413
已结题

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

用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条回答 默认 最新

  • lty2017 2020-01-02 18:56
    关注

    把头两行clear注释掉试一下

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器