typedef enum { AXES, // whether axes are drawn BB, // whether the bounding box is drawn IMMERSE, // whether to reduce radius so eye is closer LIGHTING, // whether lighting is on LIGHTS, // whether lights are shown SMOOTH, // whether shading is flat or smooth FULL_SCREEN, // whether to use the whole screen FILTER_NEAREST, // mag and min filter: linear (default) or nearest NUM_TOGGLES // used only for array limits } toggles_t; // A bunch of booleans we might want static bool Toggles[NUM_TOGGLES]; void makeToggleMenu(); int RightMenu; void rightMenuCallback(int id) { Toggles[id] = ! Toggles[id]; // toggle it // remake the menu glutDestroyMenu(RightMenu); makeToggleMenu(); if(IMMERSE == id ) twZview(); if(FULL_SCREEN == id) { if( Toggles[FULL_SCREEN] ) { twFullScreen(); } else { twWindow(); } } glutPostRedisplay(); } void makeToggleMenu() { RightMenu = glutCreateMenu(rightMenuCallback); glutAddMenuEntry(Toggles[AXES]?"Hide Axes":"Show Axes",AXES); glutAddMenuEntry(Toggles[BB]?"Hide Bounding Box":"Show Bounding Box",BB); glutAddMenuEntry(Toggles[IMMERSE]?"Back up":"Immerse",IMMERSE); glutAddMenuEntry(Toggles[LIGHTING]?"Disable Lighting":"Enable Lighting",LIGHTING); glutAddMenuEntry(Toggles[LIGHTS]?"Hide Lights":"Show Lights",LIGHTS); glutAddMenuEntry(Toggles[SMOOTH]?"Flat Shading":"Smooth Shading",SMOOTH); glutAddMenuEntry(Toggles[FULL_SCREEN]?"Window":"Full Screen",FULL_SCREEN); glutAddMenuEntry(Toggles[FILTER_NEAREST]?"Filter: Linear":"Filter: Nearest",FILTER_NEAREST); glutAttachMenu(GLUT_RIGHT_BUTTON); }