OpenGL输出页面白屏没有内容

刚开始学openGL,输入测试代码之后的运行结果是白屏怎么解决?

// OpenGLDemo.cpp: 定义控制台应用程序的入口点。 //

#include  
void renderWindow(void) {
    glClear(GL_COLOR_BUFFER_BIT); //当前背景色填充窗口 
    glColor3f(1, 0, 0); //颜色:RGB.此处R:1,为红色. 
    glBegin(GL_TRIANGLES); //开始:三角形 
    glVertex2f(-0.5f, -0.5f); //三个顶点坐标: 
    glVertex2d(0.5f, -0.5f); glVertex2d(-0.0f, 0.5f); glEnd(); //结束 
    glFlush(); //输出缓冲区 
}
int main(int argc, char* argv[]) //主函数: 参数数量&参数值
{
    glutInit(&argc, argv); //初始化glut: 接收主函数的参数 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); //显示模式:颜色&缓冲 glutInitWindowPosition(0, 0); //窗口相对屏幕位置 
    glutInitWindowSize(720, 720); //窗口大小 
    glutCreateWindow("Hello, OpenGL!"); //创建窗口: 标题 glutDisplayFunc(&renderWindow); //显示函数
    glutMainLoop(); //循环 
    return 0;
}

img

基于Monster 组和GPT的调写:
可能是因为没有设置视口(Viewport)或者没有设置投影矩阵(Projection Matrix)。以下是一些常见的问题和解决方法:

检查是否调用了glutInit()函数

glutInit() 函数是初始化 GLUT 库的函数,如果没有调用这个函数,会导致无法正确初始化 OpenGL 窗口和上下文。确保你的代码中已经调用了 glutInit() 函数,例如:

glutInit(&argc, argv);


检查是否清空了颜色缓冲区

在你的渲染函数中,需要先清空颜色缓冲区,否则可能会看到一个空白的窗口。使用 glClear() 函数清空颜色缓冲区,例如:

glClear(GL_COLOR_BUFFER_BIT);


检查是否设置了视口和投影矩阵

在你的渲染函数中,需要设置视口和投影矩阵,否则可能会看到一个空白的窗口。设置视口和投影矩阵可以使用 glViewport() 和 glMatrixMode() 函数,例如:

glViewport(0, 0, width, height); // 设置视口大小为 width x height
glMatrixMode(GL_PROJECTION); // 选择投影矩阵
glLoadIdentity(); // 重置投影矩阵
gluPerspective(fov, aspect_ratio, near, far); // 设置投影矩阵(使用透视投影)


中,width 和 height 分别表示视口的宽度和高度,fov 表示视野角度,aspect_ratio 表示宽高比,near 和 far 分别表示近裁剪面和远裁剪面的距离。

检查是否开启了深度缓冲区

在你的初始化函数中,需要开启深度缓冲区,否则可能会看到一些不正确的渲染结果。开启深度缓冲区可以使用 glEnable() 函数,例如:

  • glEnable(GL_DEPTH_TEST); // 开启深度缓冲区