Opengl 在 linux 上使用 freeglut 仅显示透明 window

Opengl using freeglut on linux shows only a transparent window

我正在尝试在 linux mint 20 上使用 freeglut3 来做一些基本的 openGL(我的老师强迫我使用 glut/freeglut 和 c++)。我只是想在屏幕上显示黑色 window,但只显示透明 window,并且直到显示分段错误(核心已转储)

才会关闭

这是我的代码

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

void init()
{
    glClearColor(1, 0, 0, 1);
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity();
    glFlush();
    glutSwapBuffers();
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
    glutInitWindowPosition(300, 100);
    glutInitWindowSize(400, 400);
    glutCreateWindow("Linux TEST");
    glutDisplayFunc(display);
    init();
    glutMainLoop();
}

我正在使用g++ main.cpp -lGL -lGLU -lglut编译代码

这是输出

您正在使用...创建双缓冲上下文...

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);

但你从来没有打电话给 glutSwapBuffers。将您的 display 函数更改为...

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