int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitWindowSize(640, 480); glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); glutCreateWindow("HelloGL2"); glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION); glewInit(); initGL(); glutDisplayFunc(onDraw); glutReshapeFunc(onResize); glutIdleFunc(onIdle); glutKeyboardFunc(NULL); glutSpecialFunc(NULL); glutMainLoop(); shutdownGL(); return 0; }
void X11WindowImpl::on_shutdown() { destroyGLFont(); shutdownGL(); }
LRESULT processMessage(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { LRESULT returnValue = 0; switch(message) { case WM_CREATE: windowHandle = hwnd; initGL(); initGLBitmapFont(GL_BITMAP_FONT_FIRST_GLYPH, GL_BITMAP_FONT_LAST_GLYPH); break; case WM_SHOWWINDOW: if ( ( (BOOL) wParam ) == TRUE ) { window->show(); autoUpdate = true; } else { window->hide(); autoUpdate = false; } break; case WM_PAINT: window->paint(); swap(); ValidateRect(hwnd, NULL); /* if (autoUpdate) SetTimer(hwnd, 1, 100, NULL); */ break; case WM_TIMER: /* if (wParam == 1) UpdateWindow(hwnd); InvalidateRect(hwnd, NULL, false); */ break; case WM_SIZE: window->resize(LOWORD(lParam), HIWORD(lParam)); break; case WM_CLOSE: window->closeRequest(); break; case WM_KEYDOWN: if (int keycode = translate_key(wParam) ) { window->keyPress(keycode); } else return -1; case WM_CHAR: window->keyPress( (int) ( (char) wParam ) ); break; case WM_LBUTTONDOWN: ( (captureView) ? captureView : window ) -> buttonPress(GUI_ButtonLeft, (short) LOWORD(lParam), (short) HIWORD(lParam) ); break; case WM_LBUTTONUP: ( (captureView) ? captureView : window ) -> buttonRelease(GUI_ButtonLeft, (short) LOWORD(lParam), (short) HIWORD(lParam)); break; case WM_RBUTTONDOWN: ( (captureView) ? captureView : window ) -> buttonPress(GUI_ButtonRight,(short) LOWORD(lParam), (short) HIWORD(lParam) ); break; case WM_RBUTTONUP: ( (captureView) ? captureView : window ) -> buttonRelease(GUI_ButtonRight,(short) LOWORD(lParam), (short) HIWORD(lParam) ); break; case WM_MBUTTONDOWN: ( (captureView) ? captureView : window ) -> buttonPress(GUI_ButtonMiddle, (short) LOWORD(lParam), (short) HIWORD(lParam) ); break; case WM_MBUTTONUP: ( (captureView) ? captureView : window ) -> buttonRelease(GUI_ButtonMiddle, (short) LOWORD(lParam), (short) HIWORD(lParam) ); break; #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) case WM_MOUSEWHEEL: { int dir = ( (short) HIWORD(wParam) > 0 ) ? GUI_WheelForward : GUI_WheelBackward; ( (captureView) ? captureView : window ) -> wheelRotate(dir); break; } #endif case WM_MOUSEMOVE: ( (captureView) ? captureView : window ) -> mouseMove( ( (short) LOWORD(lParam) ), ( (short) HIWORD(lParam) ) ); break; case WM_CAPTURECHANGED: if (captureView) { captureView->captureLost(); captureView = NULL; } break; case WM_DESTROY: destroyGLFont(); shutdownGL(); SetWindowLong(hwnd, GWL_USERDATA, (LONG) NULL ); if (window) window->notifyDestroy(); delete this; break; default: returnValue = DefWindowProc(hwnd,message,wParam,lParam); } return returnValue; }