lunes, 24 de marzo de 2014

Programa Menus

#include <GL/gl.h>
#include <GL/glut.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>

using namespace std;

#define NP 4000
#define AGE 200

float winWid,winHeight;
float rx,ry;
float pri, seg;
int v[100]={0};
float vrx[100]={0};
float vry[100]={0};
int indi=0;
int b=0;





void menu(int opc)
{

    v[indi]=opc;
    vrx[indi]=(rx/(winWid/2))-1;
    vry[indi]=(ry/(winHeight/2))-1;


    switch(v[indi])
    {


        case 1:


            glPushMatrix();
            glTranslatef(vrx[indi],vry[indi],0.0);
            glColor3f(1.0,0.0,0.0);
            glutWireSphere(0.1,15,15);
            glPopMatrix();
            glFlush();


        break;

        case 2:

            glColor3f(1.0,0.0,0.0);
            glPushMatrix();
            glTranslatef(vrx[indi],vry[indi],0.0);
            glRotatef(55,0,1,1);
            glutWireCone(0.1,0.1,15,15);
            glPopMatrix();
            glFlush();


        break;

        case 3:

            glColor3f(1.0,0.0,0.0);
            glPushMatrix();
            glTranslatef(vrx[indi],vry[indi],0.0);
            glRotatef(55,0,1,1);
            glutWireCube(0.1);
            glPopMatrix();
            glFlush();

        break;

        case 4:

            glColor3f(1.0,0.0,0.0);
            glPushMatrix();
            glTranslatef(vrx[indi],vry[indi],0.0);
            glScalef(0.1,0.1,0.1);
            glRotatef(55,0,1,1);
            glutWireDodecahedron();
            glPopMatrix();
            glFlush();

        break;



    }
}


void dibuja(){
    //glClear(GL_COLOR_BUFFER_BIT);

    menu(v[indi]);


    glutSwapBuffers();
}
// en donde se de clic se movera el punto
void mousebutton(int button, int state, int x, int y)
{
    cerr << "mousebutton. x:" << x << ", y:" << y << "\n";
    if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN){
        rx = float(x);
        ry = winHeight - float(y);
        indi++;

 //       redraw();

    }
}




int main(int argc, char *argv[]){
    winWid = 600.0;
    winHeight = 400.0;
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
    glutCreateWindow(" ");
    glutPositionWindow(200,100);
    glutReshapeWindow(int(winWid),int(winHeight));
    glClearColor(0.0,0.0,0.0,1.0);

    glMatrixMode(GL_PROJECTION);



    glLoadIdentity();


//    glutMotionFunc(motion);
    glutDisplayFunc(dibuja);
    glutIdleFunc(dibuja);
    glutMouseFunc(mousebutton);
    glutCreateMenu(menu);
    glutAddMenuEntry("Opcion 1", 1);
    glutAddMenuEntry("Opcion 2", 2);
    glutAddMenuEntry("Opcion 3", 3);
    glutAddMenuEntry("Opcion 4", 4);
    glutAttachMenu(GLUT_RIGHT_BUTTON);


    glutMainLoop();

    return 0;
}

No hay comentarios:

Publicar un comentario