gpt4 book ai didi

使用 glut 创建窗口,但程序不一致

转载 作者:行者123 更新时间:2023-11-30 14:30:11 27 4
gpt4 key购买 nike

我只是想制作一个程序来显示一个带有框的窗口,但是当我运行该程序时,我可能只在 5 次运行中显示一次窗口。每次执行命令行时都会给出适当的响应,并且我会在屏幕底部的 gnome 面板上看到窗口的标题,但窗口本身在大多数情况下是不可见的。

我完全不知道原因在哪里,我想开始寻找。有什么建议吗?

我使用 gcc main.c -lglut 编译并运行:

#include <stdio.h>
#include <GL/freeglut.h>

void keyb(unsigned char key, int x, int y);

//Window identifier
static int win;

main(int argc, char **argv){
//Initialization
glutInit(&argc, argv);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
win = glutCreateWindow("Test Window");

//Callback
glutKeyboardFunc(keyb);

//OpenGL
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,1.0,1.0);
glOrtho(-1.0,1.0,-1.0,1.0,-1.0,1.0);
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();
glFlush();

//Enter main loop
glutMainLoop();

return 0;
}

void keyb(unsigned char key, int x, int y){
printf("Pressed key %c on coordinates %d, %d\n", key, x, y);
if(key == 'q'){
printf("Got q, so qutting\n");
glutDestroyWindow(win);
exit(0);
}
}

最佳答案

在调用glutMainLoop之前需要注册一个显示函数回调:

glutDisplayFunc(display);

并将渲染函数放入 display 函数中:

void display(){
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
/*
Draw here
*/
glutSwapBuffers();
}

关于使用 glut 创建窗口,但程序不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718815/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com