glClear有时会工作,有时也不会

时间:2015-03-10 11:13:23

标签: opengl c++11

我有非常简单的openGL代码:

screen.cpp

#include <GL/glew.h>
#include <GL/freeglut.h>
#include <GL/gl.h>

#include <iostream>

#define WIDTH 683
#define HEIGHT 384

void init() {
    glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
}

void display() {
    glClear(GL_COLOR_BUFFER_BIT);
    glutSwapBuffers();
}

int main(int argc, char* argv[]) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowSize(WIDTH, HEIGHT);
    glutCreateWindow("test");
    glutDisplayFunc(display);

    GLenum res = glewInit();
    if (res != GLEW_OK) {
        std::cout<<"Error: "<<glewGetErrorString(res)<<std::endl;
        return 1;
    }

    init();
    glutMainLoop();

    return 0;
}

奇怪的是,这些代码有时会起作用,有时也不会。我希望得到一个白色的空白屏幕,当我运行这个程序时,随机和更频繁地,我会得到透明的屏幕显示程序运行之前的内容。有时程序正常工作,并显示一个空白的白色屏幕。有什么问题?

编译: g ++ -o screen screen.cpp -g -Wall -std = c ++ 11 -lGLEW -lglut -lGL

1 个答案:

答案 0 :(得分:1)

它是你在clearColor中指定的alpha,0表示透明,将其更改为1,它将是一个合适的空白屏幕。