domingo, 27 de noviembre de 2016

EJERCICIO 4

ENUNCIADO

Modificar el ejercicio 3 para que el menu incluya la opcion de cambiar el tamano de la tetera. Tendra las opciones de agrandar , normal y reducir tamano.

FIGURA



CODIGO FUENTE

#include <stdio.h>
#include <stdlib.h>

#include <GL/glx.h>    /* this includes the necessary X headers */
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

#include <X11/X.h>    /* X11 constant (e.g. TrueColor) */
#include <X11/keysym.h>

int iFondo=0;
int iDibujo=3;
float iTamano=0.5;

typedef enum {FONDO1,FONDO2,FONDO3,DIBUJO1,DIBUJO2,DIBUJO3,TAMANO1,TAMANO2,TAMANO3}
opcionesMenu;

void onMenu (int opcion) {
    switch (opcion) {
        case FONDO1:
            iFondo=0;
        break;
         case FONDO2:
            iFondo=1;
        break;
         case FONDO3:
            iFondo=2;
        break;
         case DIBUJO1:
            iDibujo=3;
        break;
           case DIBUJO2:
            iDibujo=4;
        break;
           case DIBUJO3:
            iDibujo=5;
           break;


        case TAMANO1:
            iTamano++;
        break;
          case TAMANO2:
            iTamano=0.5;
        break;

        case TAMANO3:
            iTamano=iTamano-0.1;
        break;



    }

    glutPostRedisplay();

}


void creacionMenu () {
    int menuFondo,menuDibujo,menuPrincipal,menuTamano;

    menuFondo= glutCreateMenu(onMenu);
    glutAddMenuEntry("Negro",FONDO1);
    glutAddMenuEntry("Verde oscuro",FONDO2);
    glutAddMenuEntry("Azul oscuro",FONDO3);

    menuDibujo=glutCreateMenu(onMenu);
    glutAddMenuEntry("Blanco",DIBUJO1);
    glutAddMenuEntry("Verde claro",DIBUJO2);
    glutAddMenuEntry("Azul claro",DIBUJO3);


    menuTamano=glutCreateMenu(onMenu);
    glutAddMenuEntry("AGRANDAR",TAMANO1);
    glutAddMenuEntry("NORMAL",TAMANO2);
    glutAddMenuEntry("REDUCIR",TAMANO3);

    menuPrincipal = glutCreateMenu(onMenu);
    glutAddSubMenu("Color de fondo",menuFondo);
    glutAddSubMenu("Color de dibujo",menuDibujo);
    glutAddSubMenu("Cambiar tamano",menuTamano);

    glutAttachMenu(GLUT_RIGHT_BUTTON);
}


void display() {
    float colores [6] [3] = {
     {0.00f,0.00f,0.00f}, // 0-negro
     {0.06f,0.25f,0.13f}, // 1-verde oscuro
     {0.10f,0.07f,0.33f}, // 2-azul oscuro
     {1.00f,1.00f,1.00f}, // 3-blanco
     {0.12f,0.50f,0.26f}, // 4-verde claro
     {0.20f,0.14f,0.66f}, // 5-azul claro
    };

    glClearColor(colores[iFondo][0],colores[iFondo][1],colores[iFondo][2],1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(colores[iDibujo][0],colores[iDibujo][1],colores[iDibujo][2]);
    glutWireTeapot(iTamano);

    glFlush();
    glutSwapBuffers();
}


int main (int argc,char** argv) {

    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(700,700);
    glutInitWindowPosition(200,200);

    glutCreateWindow("Ejercicio 3 ejemplo menus");
    glutDisplayFunc(display);
    creacionMenu();

    glutMainLoop();

    return 0;
}

No hay comentarios:

Publicar un comentario