+ // Construct material menu\r
+ int materialMenu = glutCreateMenu(processMaterialEvents);\r
+ glutAddMenuEntry("All R/G/B", MATERIAL_ALL_RGB);\r
+ glutAddMenuEntry("Ambient R/G/B", MATERIAL_AMBIENT_RGB);\r
+ glutAddMenuEntry("Diffuse R/G/B", MATERIAL_DIFFUSE_RGB);\r
+ glutAddMenuEntry("Specular R/G/B", MATERIAL_SPECULAR_RGB);\r
+ glutAddMenuEntry("All Amb/Diff/Spec/Shine", MATERIAL_ALL_ADSS);\r
+ glutAddMenuEntry("Red Amb/Diff/Spec/Shine", MATERIAL_RED_ADSS);\r
+ glutAddMenuEntry("Green Amb/Diff/Spec/Shine", MATERIAL_GREEN_ADSS);\r
+ glutAddMenuEntry("Blue Amb/Diff/Spec/Shine", MATERIAL_BLUE_ADSS);\r
+\r
+ // Construct light menu\r
+ int lightMenu = glutCreateMenu(processLightEvents);\r
+ glutAddMenuEntry("Move Light 1", LIGHT_MOVE_LIGHT_1);\r
+ glutAddMenuEntry("R/G/B/All Light 1", LIGHT_RGBALL_LIGHT_1);\r
+ glutAddMenuEntry("Move Light 2", LIGHT_MOVE_LIGHT_2);\r
+ glutAddMenuEntry("R/G/B/All Light 2", LIGHT_RGBALL_LIGHT_2);\r
+\r
+ // Construct add object submenus\r
+ int addObjectMenu = makeSubmenuFromArray( &objectMenuEntries, processObjectEvents );\r
+\r
+ // Construct texture/ground texture submenus\r
+/* int textureMenuEntries = sizeof(textureMenuEntries) / sizeof(textureMenuEntries[0]);\r
+ int menuNumber = textureMenuEntries / 10 + 1;\r
+ int textureSubmenu[menuNumber-1];\r
+\r
+ for( int i = 0; i < menuNumber; i++ ) {\r
+ textureSubmenu[i] = glutCreateMenu(processTextureEvents);\r
+ int startNum = i*11 - (i-1);\r
+ for ( int j = startNum - 1; j < (startNum+9); j++ ) {\r
+ if ( j == objectMenuEntriesSize ) break; // Detect if we've reached the end of the array\r
+ glutAddMenuEntry( objectMenuEntries[j], j );\r
+ }\r
+ }*/\r
+\r
+\r
+ int mainMenu = glutCreateMenu(processMainEvents);\r