我创建了一个简单的 GLUT 程序,它应该简单地绘制一个三角形:
#include <GL/glut.h>
#include <iostream>
using namespace std;
void render(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
cout << "ran" << endl;
glutSwapBuffers();
}
void update(int value) {
static_cast<void>(value);
glutPostRedisplay();
glutTimerFunc(16, update, 0);
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(0, 0);
glutInitWindowSize(1000, 1000);
glutCreateWindow("window");
glutDisplayFunc(render);
glutTimerFunc(25, update, 0);
glutMainLoop();
return 1;
}
...但是却有意想不到的结果:
当我没有更新功能时,它似乎只显示一次奇怪的屏幕,然后它会自行修复。当拖动窗口时,它还会显示正确的显示。我觉得可能是我机器的问题?我过去已经能够使用 OpenGL 和 GLUT。
我遇到了同样的问题,相同的视觉效果,相同的环境。我觉得自己很傻,没有早点尝试,但是
wsl --update
,然后重新启动就解决了这个问题。