【发布时间】:2016-08-12 10:53:02
【问题描述】:
我在 Windows 7 下使用 FreeGLUT 3.0.0(使用 MSVC 2013 从源代码构建)来创建 OpenGL 上下文已经有一段时间了,但今天我遇到了一些奇怪的行为:当我按下 F10 时键,窗口停止刷新。以下是在 MSVC 2013、Windows 7 下实现这种奇怪行为的最少代码:
#define FREEGLUT_STATIC
#include <gl/glut.h>
#include <iostream>
using namespace std;
void init()
{
glClearColor(1.0, 0.0, 0.0, 0.0);
}
void display()
{
cout << "a" << endl;
glClear(GL_COLOR_BUFFER_BIT);
glutSwapBuffers();
glutPostRedisplay();
}
void reshapeFunc(int width, int height)
{
glViewport(0, 0, 640, 480);
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(640, 480);
glutInitWindowPosition(0, 0);
glutCreateWindow("What?");
init();
glutDisplayFunc(display);
glutReshapeFunc(reshapeFunc);
glutMainLoop();
return 0;
}
在本例中,当我按下F10 时,命令行停止打印字符'a',并在我再次按下F10 时继续。
奇怪的是我没有对F10做任何特别的事情(我遇到这个问题是因为我没有写GLUT_KEY_F10之类的东西)。所有其他功能键都没有这个问题。我不知道为什么这是特定于 F10 键的。
有人对如何处理这个问题有任何建议吗?
【问题讨论】:
-
在minimal reproducible example 中编辑以及有关您的环境的更多信息(操作系统、FreeGLUT 版本、是从源代码构建的 FreeGLUT 还是您使用二进制文件等)。
-
@genpfault 谢谢。我已经用最小的可运行代码编辑了问题仍然出现的问题。