//----------------------------------------------------------------// void _AKUOpenWindowFunc ( const char* title, int width, int height ) { sWinX = 180; sWinY = 100; sWinWidth = width; sWinHeight = height; sWinWidth = width; sWinHeight = height; if ( !sHasWindow ) { glutInitDisplayMode ( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH ); glutInitWindowSize ( sWinWidth, sWinHeight ); glutInitWindowPosition ( sWinX, sWinY ); if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) { exit(1); } glutCreateWindow ( title ); sHasWindow = true; } #if !AKU_WITH_TEST glutIgnoreKeyRepeat ( 1 ); glutKeyboardFunc ( _onKeyDown ); glutKeyboardUpFunc ( _onKeyUp ); glutSpecialFunc ( _onSpecialFunc ); glutMouseFunc ( _onMouseButton ); glutMotionFunc ( _onMouseDrag ); #ifdef FREEGLUT_STATIC glutMultiButtonFunc ( _onMultiButton ); glutMultiMotionFunc ( _onMultiMotion ); #endif glutPassiveMotionFunc ( _onMouseMove ); #endif glutDisplayFunc ( _onPaint ); glutReshapeFunc ( _onReshape ); AKUDetectGfxContext (); AKUSetScreenSize ( width, height ); #ifdef __APPLE__ GLint sync = 1; CGLContextObj ctx = CGLGetCurrentContext(); CGLSetParameter (ctx, kCGLCPSwapInterval, &sync); #endif }
int main(int argc, char* argv[]) { memset(cursors, 0, sizeof(cursors)); glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE); glutInitWindowSize(640, 480); glutCreateWindow("Multi-touch test"); glutDisplayFunc(onDisplay); glutReshapeFunc(onReshape); glutIdleFunc(onIdle); glutMouseFunc(onMouse); glutMotionFunc(onMotion); glutMultiButtonFunc(onMultiButton); glutMultiMotionFunc(onMultiMotion); glutMainLoop(); return EXIT_SUCCESS; }
///////////////////////////////////////////////////////// // createMess // ///////////////////////////////////////////////////////// bool gemglutwindow :: create(void) { if(m_window) { error("window already made!"); return false; } #ifdef FREEGLUT // display list sharing (with FreeGLUT) if(s_windowmap.size()>0) { std::map<int,gemglutwindow*>::iterator it = s_windowmap.begin(); gemglutwindow*other=NULL; other=it->second; if(other && other->makeCurrent()) { glutSetOption(GLUT_RENDERING_CONTEXT, GLUT_USE_CURRENT_CONTEXT ); } } #endif unsigned int mode=GLUT_RGB | GLUT_DEPTH; if(2==m_buffer) mode|=GLUT_DOUBLE; else mode|=GLUT_SINGLE; glutInitDisplayMode(mode); #ifdef FREEGLUT // glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS); glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION); glutSetOption(GLUT_INIT_WINDOW_X, m_xoffset); glutSetOption(GLUT_INIT_WINDOW_Y, m_yoffset); glutSetOption(GLUT_INIT_WINDOW_WIDTH, m_width); glutSetOption(GLUT_INIT_WINDOW_HEIGHT, m_height); #endif m_window=glutCreateWindow(m_title.c_str()); s_windowmap[m_window]=this; glutReshapeWindow(m_width, m_height); glutPositionWindow(m_xoffset, m_yoffset); glutCloseFunc (&closeCb); glutKeyboardFunc(&keyboardCb); glutSpecialFunc(&specialCb); glutReshapeFunc(&reshapeCb); glutKeyboardUpFunc(&keyboardupCb); glutSpecialUpFunc(&specialupCb); glutJoystickFunc(&joystickCb, 20); glutMenuStateFunc(&menustateCb); glutMenuStatusFunc(&menustatusCb); glutWindowStatusFunc(&windowstatusCb); #if (defined GLUT_HAS_MULTI) && (GLUT_HAS_MULTI > 0) glutMultiEntryFunc(multiEntryCb); glutMultiButtonFunc(multiButtonCb); glutMultiMotionFunc(multiMotionCb); glutMultiPassiveFunc(multiPassivemotionCb); #else glutEntryFunc(&entryCb); glutMouseFunc(&mouseCb); glutMotionFunc(&motionCb); glutPassiveMotionFunc(&passivemotionCb); #endif // glutNameFunc(&nameCb); glutDisplayFunc (&displayCb); glutVisibilityFunc(&visibleCb); if(!createGemWindow()) { destroyMess(); return false; } titleMess(m_title); fullscreenMess(m_fullscreen); dispatch(); return true; }