#define WIREFRAME 100 #define COLOR 102 #define LIGHT 103 #define SHADED 200 #define SHADED_FLAT 201 #define SHADED_SMOOTH 202 #include #include int id_MENU1; //ID menu 1 int id_MENU2; //ID sub menu 1 void mainWin(void) { glClear(GL_COLOR_BUFFER_BIT); glClearColor(0.0,0.0,0.0,0.0); } /*Funzione di Gestione del Menu*/ void menu1(int id_entry) { switch(id_entry){ case(WIREFRAME): printf("ID_entry: %d\n",id_entry); break; case(COLOR): printf("ID_entry: %d\n",id_entry); break; case(LIGHT): printf("ID_entry: %d\n",id_entry); break; //Sub menu case(SHADED_FLAT): printf("ID_entry: %d\n",id_entry); break; case(SHADED_SMOOTH): printf("ID_entry: %d\n",id_entry); break; default: printf("Default: %d\n",id_entry); break; } } void InitGlut(void) { glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE); glutInitWindowSize(300,300); glutInitWindowPosition(50,50); glutCreateWindow("Menu"); //Creo TOP-LEVEL Window //Creazione MENU 1 id_MENU1=glutCreateMenu(menu1); //Creo il CURRENT-MENU glutAddMenuEntry("Wire Frame",WIREFRAME); //Inserisco le Entry glutAddMenuEntry("Color",COLOR); glutAddMenuEntry("Light",LIGHT); glutAddMenuEntry("----------------------",0); //Creazione MENU2 id_MENU2=glutCreateMenu(menu1); glutAddMenuEntry("Flat",SHADED_FLAT); glutAddMenuEntry("Smooth", SHADED_SMOOTH); glutSetMenu(id_MENU1); //Imposto il CURRENT-MENU glutAddSubMenu("Shaded",id_MENU2); //Aggiungo il Sub-MENU glutAttachMenu(GLUT_RIGHT_BUTTON); //Registrazione CALL-BACK function glutDisplayFunc(mainWin); } void main(int argc, char *argv[]) { glutInit(&argc, argv); InitGlut(); glutMainLoop(); }