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注释掉试一下

    评论

报告相同问题?

悬赏问题

  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划