glutInit(&argc, argv);
glutInitContextVersion(4, 2);
glutInitContextFlags(GLUT_FORWARD_COMPATIBLE | GLUT_DEBUG);
glutInitContextProfile(GLUT_CORE_PROFILE);
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,
GLUT_ACTION_GLUTMAINLOOP_RETURNS);
glutInitWindowSize(mPixelWidth, mPixelHeight);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
mHandle = glutCreateWindow(k_Window_Name);
if(mHandle < 1) {
error(AT, "s", k_Error_System_Window);
getchar();
exit(0);
}
glutSetWindowData(this);
glutDisplayFunc(proxyDisplay);
glutIdleFunc(proxyIdle);
glutKeyboardFunc(proxyKeyboard);
glutMotionFunc(proxyMotion);
glutMouseFunc(proxyMouse);
glutMouseWheelFunc(proxyMouseWheel);
glutReshapeFunc(proxyResize);
GLenum glew_init_result = glewInit();
if(GLEW_OK != glew_init_result) {
error(AT, "s", glewGetErrorString(glew_init_result));
getchar();
exit(0);
}
char window_title_info[BUFSIZ];
sprintf(window_title_info, k_Window_Title_Format, k_Window_Name,
glGetString(GL_VERSION));
glutSetWindowTitle(window_title_info);
mCamera = new Camera(90.0f, 0.1f, 10000.0f);
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
if(glDebugMessageCallback)
glDebugMessageCallback(debugLog, nullptr);