added a child window to one demo, added different menus attached to
authorDiederick Niehorster <dcnieho@gmail.com>
Sat, 21 Jul 2012 14:15:39 +0000 (14:15 +0000)
committerDiederick Niehorster <dcnieho@gmail.com>
Sat, 21 Jul 2012 14:15:39 +0000 (14:15 +0000)
different mouse buttons, for testing
Also added missing post redisplay to keep animation going

git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@1355 7f0cb862-5218-0410-a997-914c9d46530a

progs/demos/One/one.c

index ee62c81..cdabd24 100644 (file)
@@ -23,6 +23,7 @@
 
 int g_LeaveGameMode = 0;
 int g_InGameMode = 0;
+int g_mainwin, g_sw1;
 
 /*
  * Call this function to have some text drawn at given coordinates
@@ -97,50 +98,65 @@ static float g_fTime = 0.0f;
 
 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 ); */
+    int win = glutGetWindow();
 
-    /*
-     * Don't forget about the model-view matrix
-     */
-    glPopMatrix( );
-
-    /*
-     * 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);
 }
 
 /*
@@ -289,7 +305,7 @@ int main( int argc, char** argv )
     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 );
@@ -299,6 +315,11 @@ int main( int argc, char** argv )
     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" );
     glutGameModeString( "640x480:16@72" );