int g_LeaveGameMode = 0;
int g_InGameMode = 0;
+int g_mainwin, g_sw1;
/*
* Call this function to have some text drawn at given coordinates
void SampleDisplay( void )
{
- /*
- * Clear the screen
- */
- glClearColor( 0, 0.5, 1, 1 );
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
- /*
- * Have the cube rotated
- */
- glMatrixMode( GL_MODELVIEW );
- glPushMatrix();
-
- glRotatef( g_fTime, 0, 0, 1 );
- glRotatef( g_fTime, 0, 1, 0 );
- glRotatef( g_fTime, 1, 0, 0 );
-
- /*
- * And then drawn...
- */
- glColor3f( 1, 1, 0 );
- /* glutWireCube( 20.0 ); */
- glutWireTeapot( 20.0 );
- /* glutWireSpher( 15.0, 15, 15 ); */
- /* glColor3f( 0, 1, 0 ); */
- /* glutWireCube( 30.0 ); */
- /* glutSolidCone( 10, 20, 10, 2 ); */
-
- /*
- * Don't forget about the model-view matrix
- */
- glPopMatrix( );
+ int win = glutGetWindow();
- /*
- * Draw a silly text
- */
- if( g_InGameMode == 0 )
- PrintText( 20, 20, "Hello there cruel world!" );
+ if (win==g_sw1)
+ {
+ /*
+ * Clear the screen
+ */
+ glClearColor(0.7f,0.7f,0.7f,1);
+ glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
+ glutPostWindowRedisplay(g_mainwin);
+ }
else
- PrintText( 20, 20, "Press ESC to leave the game mode!" );
+ {
+ /*
+ * Clear the screen
+ */
+ glClearColor( 0, 0.5, 1, 1 );
+ glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
+
+ /*
+ * Have the cube rotated
+ */
+ glMatrixMode( GL_MODELVIEW );
+ glPushMatrix();
+
+ glRotatef( g_fTime, 0, 0, 1 );
+ glRotatef( g_fTime, 0, 1, 0 );
+ glRotatef( g_fTime, 1, 0, 0 );
+
+ /*
+ * And then drawn...
+ */
+ glColor3f( 1, 1, 0 );
+ /* glutWireCube( 20.0 ); */
+ glutWireTeapot( 20.0 );
+ /* glutWireSpher( 15.0, 15, 15 ); */
+ /* glColor3f( 0, 1, 0 ); */
+ /* glutWireCube( 30.0 ); */
+ /* glutSolidCone( 10, 20, 10, 2 ); */
+
+ /*
+ * Don't forget about the model-view matrix
+ */
+ glPopMatrix( );
+
+ /*
+ * Draw a silly text
+ */
+ if( g_InGameMode == 0 )
+ PrintText( 20, 20, "Hello there cruel world!" );
+ else
+ PrintText( 20, 20, "Press ESC to leave the game mode!" );
+ }
/*
* And swap this context's buffers
*/
glutSwapBuffers( );
+ glutPostWindowRedisplay(win);
}
/*
}
}
+void SampleEntry(int state)
+{
+ int window = glutGetWindow () ;
+ printf ( "Window %d Entry Callback: %d\n", window, state ) ;
+ glutPostRedisplay () ;
+}
+
/*
* The reshape function
*/
glutInit( &argc, argv );
+ glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_GLUTMAINLOOP_RETURNS);
+
subMenuA = glutCreateMenu( SampleMenu );
glutAddMenuEntry( "Sub menu A1 (01)", 1 );
glutAddMenuEntry( "Sub menu A2 (02)", 2 );
glutKeyboardFunc( SampleKeyboard );
glutSpecialFunc( SampleSpecial );
glutIdleFunc( SampleIdle );
+ glutEntryFunc( SampleEntry );
glutAttachMenu( GLUT_LEFT_BUTTON );
glutInitWindowPosition( 200, 200 );
- glutCreateWindow( "I am not Jan B." );
+ g_mainwin = glutCreateWindow( "I am not Jan B." );
glutDisplayFunc( SampleDisplay );
glutReshapeFunc( SampleReshape );
glutKeyboardFunc( SampleKeyboard );
glutSpecialFunc( SampleSpecial );
glutIdleFunc( SampleIdle );
glutAttachMenu( GLUT_LEFT_BUTTON );
+ glutSetMenu(subMenuA);
+ glutAttachMenu( GLUT_RIGHT_BUTTON);
+
+ g_sw1=glutCreateSubWindow(g_mainwin,200,0,100,100);
+ glutDisplayFunc( SampleDisplay );
+ glutSetMenu(subMenuB);
+ glutAttachMenu( GLUT_LEFT_BUTTON);
printf( "Testing game mode string parsing, don't panic!\n" );
glutGameModeString( "320x240:32@100" );
glutReshapeFunc( SampleReshape );
glutKeyboardFunc( SampleGameModeKeyboard );
glutIdleFunc( SampleIdle );
- glutAttachMenu( GLUT_LEFT_BUTTON );
- printf( "current window is %ix%i at (%i,%i)",
+ printf( "current window is %ix%i at (%i,%i)\n",
glutGet( GLUT_WINDOW_WIDTH ), glutGet( GLUT_WINDOW_HEIGHT ),
glutGet( GLUT_WINDOW_X ), glutGet( GLUT_WINDOW_Y )
);
return EXIT_SUCCESS;
}
-/*** END OF FILE ***/
+/*** END OF FILE ***/
\ No newline at end of file