这是我的初始化代码:
const int WIN_HEIGHT = 640;
const int WIN_WIDTH = 640;
void main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
/* lines in question */
glEnable(GL_DEPTH_TEST);
glEnable(GL_NORMALIZE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glShadeModel(GL_SMOOTH);
glutInitWindowSize(WIN_WIDTH, WIN_HEIGHT);
glutCreateWindow("OpenGL");
glutDisplayFunc(Draw);
glutKeyboardFunc(HandleInput);
Initialize();
glutMainLoop();
}
因此,大多数代码都是基本3D程序的漂亮样板。问题是,如果我将所有
glEnable()
行放在glutCreateWindow()
之前,将它们重置。创建窗口后移动它们很简单(我将它们移到了自己的Initialize()
函数中),但是为什么glutCreateWindow()
会禁用它们呢? 最佳答案
我想说这是因为在调用glutCreateWindow()
之前尚未创建context。然后,您可以在创建一个之后对其进行设置,可以从以下文本中进行解释:
由于没有上下文(或旧的,无效的上下文),因此您对glInit()
的调用不会影响当前窗口的上下文。
关于c++ - glutCreateWindow(…)重置我的启用标志?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8349480/