OpenGL-没有设置glClear的坏处

就好比如果我们如果去绘制一个圆形,这里没有设置glClear

#include "GLTools.h"
#include <glut/glut.h>

void draw()
{
  //1、清屏颜色
    glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
    
   //前一个函数设置好清除颜色,后者利用前一个函数设置好的当前清除颜色设置窗口颜色
    //开始渲染 指定填充方式
    glBegin(GL_POLYGON);
    const int n=60;
    const float R = 0.5f;
    const GLfloat PI = 3.1415926;
    
    for(int i=0;i<n;i++)
    {
        glVertex2f(R*cos(2*PI/n*i), R*sin(2*PI/n*i));
    }
    //结束渲染
    glEnd();
    glFlush();
}
int main(int argc,const char * argv[])
{
    /**1、初始一个GLUT库,初始化OpenGL环境
     */
    glutInit(&argc,(char **)argv);
    
    //2、创建一个窗口并且去指定窗口名
    glutCreateWindow("Window");
    
    //3.注册一个绘图函数,操作系统在必要时刻就会对窗体进行重绘制操作
    //它设置了一个显示回调(diplay callback),即GLUT在每次更新窗口内容的时候回自动调用该例程
    glutDisplayFunc(draw);
    
    glutMainLoop();
    
}
效果图如下直接花屏了


因为我们没有去调用glClear去清除颜色缓冲区,清除颜色缓冲区的目的是,防止缓冲区中原有的颜色信息影响本次绘图。调用下下面的函数就好了


glClear(GL_COLOR_BUFFER_BIT);


效果图如下



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值