Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Menu And Submenu (OPen GL) Year4 CS7

Avatar for AdaCS7 AdaCS7
February 24, 2013
23

Menu And Submenu (OPen GL) Year4 CS7

By: Novice Dalasamooth khamphadith FNSC 0380
Mr Souksavath manibod FNSC 0032
Miss Nid Phunthavong FNSC 0036

Note:
All Code of Menu & Submenu at "AdaCS7" in github

Avatar for AdaCS7

AdaCS7

February 24, 2013

Transcript

  1. #include <GL/glut.h> int shape; int color; void init(void) { glEnable(GL_DEPTH_TEST);

    glClearColor(0.5, 0.5, 0.5, 0.0); // ຕ ້ ງ​ຄ ່ າການ​ສະ​ ແດງ​ຜ ົ ນ​ທາງ​ໜ ້ າ​ຈ ໍ ​ເປ ນ​ສ ີ ​ຂ ີ ້ ​ເທ ົ າ​ຈ ່ າງໆ glColor3f(1.0, 1.0, 1.0); glMatrixMode(GL_PROJECTION); glRotatef (30.0, 0.0, 1.0, 1.0); glOrtho(-50,50,-50,50,-50,50); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }
  2. void mainMenu (int option) { switch (option) { case 1:

    glClearColor (1.0, 1.0, 1.0, 0.0); break; // ​ຂຽນ​ພ ້ ນຫ ງ​ສ ີ ​ເປ ນຂາວ case 2: glClearColor (1.0, 1.0, 0.0, 0.0); break; // ຂຽນ​ພ ້ ນຫ ງ​ເປ ນສ ີ ເຫ ອງ case 3: glClearColor(0.0, 1.0, 1.0, 1.0); break; //ຂຽນ​ພ ້ ນຫ ງ​ເປ ນສ ີ } glutPostRedisplay ( ); }
  3. void colorFcn (int item) { color = item; glutPostRedisplay(); }

    void shapeFcn (int item) { shape = item; glutPostRedisplay(); }
  4. void display (void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // ລ ົ

    ບ​ລ ້ າງ​ການ​ສະ​ແດງ​ຜ ົ ນ​ທາງ​ໜ ້ າ​ຈ ໍ . glEnable (GL_LINE_SMOOTH); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); switch (color) { case 1: glColor3f (1.0, 0.0, 0.0); break; // ປ ່ ຽນ​ສ ີ ​ເປ ນ​ສ ີ ​ແດງ case 2: glColor3f (0.0, 1.0, 0.0); break; // ປ ່ ຽນ​ສ ີ ​ເປ ນ​ສ ີ ​ຂຽວ case 3: glColor3f (0.0, 0.0, 1.0); break; // ປ ່ ຽນ​ສ ີ ​ເປ ນ​ສ ີ ຟ ້ າ case 4: glColor3f (0.0, 0.0, 0.0); break; // ປ ່ ຽນ​ສ ີ ​ເປ ນ​ສ ີ ດ ໍ າ }
  5. switch (shape) { case 1 : glutWireTorus (5, 20, 10,

    10); break; // ແຕ ້ ມ​ຮ ູ ບ Torus case 2 : glutWireSphere (30, 50, 20); break; // ແຕ ້ ມ​ຮ ູ ບ Sphere case 3 : glutWireTeapot (25); break; // ​ແຕ ້ ມ​ຮ ູ ບ​ Teapot } glutSwapBuffers(); glFlush ( ); }
  6. void main (int argc, char **argv) { GLint subMenu1, subMenu2;

    // ປະ​ກາດ​ຕ ົ ວ​ແປ​ໃນ​ການ​ສ ້ າງ Menu. glutInit (&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowPosition (50, 50); glutInitWindowSize (500, 500); glutCreateWindow ("Menu & Submenu");
  7. init ( ); glutDisplayFunc (display); subMenu1 = glutCreateMenu (colorFcn); //

    ສ ້ າງ​ Menu ​ຍ ່ ອຍ. glutAddMenuEntry ("Red", 1); glutAddMenuEntry ("Green", 2); glutAddMenuEntry ("Blue", 3); glutAddMenuEntry ("Black", 4); subMenu2 = glutCreateMenu (shapeFcn); // ສ ້ າງ​ Menu ຍ ່ ອຍ. glutAddMenuEntry ("WireTorus", 1); glutAddMenuEntry ("WireSphere", 2); glutAddMenuEntry ("WireTeapot", 3);
  8. glutCreateMenu (mainMenu); // ສ ້ າງ pop- up menu ຫ

    ກ. glutAddMenuEntry ("White Blackground", 1); glutAddMenuEntry ("Yellow Blackground", 2); glutAddMenuEntry ("wht Blackground", 3); glutAddSubMenu ("Color", subMenu1); glutAddSubMenu ("Shape", subMenu2); /* ໃຊ ້ Menu ໂດຍ​ການ Click ຂວາແລ ້ ວ​ເລ ອກ Menu. */ glutAttachMenu (GLUT_RIGHT_BUTTON); shape = color = 1; // ປ ່ ຽນ​ເປ ນ​ລ ກ​ສະ​ນະ ແລະ ສ ີ ທ ີ່ ​ໄດ ້ ​ເລ ອກ​ ຈາກ Menu glutMainLoop ( ); }