glutCreateWindow调用后无窗口显示,编译运行无报错求助
GLUT程序无窗口弹出问题修复
- 核心问题:代码缺少
glutInitDisplayMode调用,这是GLUT创建窗口上下文的必要步骤,没有它系统无法正确初始化OpenGL渲染环境,导致窗口无法显示。 - 次要问题:未初始化OpenGL基础状态(如背景色、投影矩阵),且默认点尺寸过小,即使窗口显示也难以看到内容。
修复后的完整代码:
#include <GL/gl.h> #include <GL/glut.h> void init() { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // 设置白色背景,凸显黑色点 glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.0, 1.0, -1.0, 1.0); // 正交投影匹配窗口坐标范围 glPointSize(5.0f); // 放大点尺寸,方便观察 } void redraw(void) { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POINTS); glColor3f(0.0f, 0.0f, 0.0f); // 设置点为黑色 glVertex2f(0.0, 0.0); glEnd(); glFlush(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 必须:初始化显示模式 glutInitWindowSize(400, 400); // 设定窗口大小 glutInitWindowPosition(100, 100); // 设定窗口初始位置 glutCreateWindow("Punto"); init(); // 调用状态初始化函数 glutDisplayFunc(redraw); glutMainLoop(); return 0; // 符合C语言main函数返回规范 }
编译命令保持原命令不变:g++ main.c -o gl -lfreeglut -lopengl32 -lglu32
运行修复后的程序,应该能看到一个400x400的白色窗口,中心有一个黑色的点。
内容的提问来源于stack exchange,提问作者Endriu
相关产品推荐
相关产品推荐

