sábado, 26 de noviembre de 2016
Ejercicio 3
ENUNCIADO
Ejemplo de creacion de menus. Este programa tendra un menu con dos submenus. Estos permitiran elegir el color de fondo y el del dibujo. Para activar el menu principal bastara con hacer clic en el boton derecho del mouse.
FIGURA
CODIGO
#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;
typedef enum {FONDO1,FONDO2,FONDO3,DIBUJO1,DIBUJO2,DIBUJO3}
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;
}
glutPostRedisplay();
}
void creacionMenu () {
int menuFondo,menuDibujo,menuPrincipal;
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);
menuPrincipal = glutCreateMenu(onMenu);
glutAddSubMenu("Color de fondo",menuFondo);
glutAddSubMenu("Color de dibujo",menuDibujo);
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(0.5);
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;
}
Suscribirse a:
Enviar comentarios (Atom)

No hay comentarios:
Publicar un comentario