#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <iostream>
#endif
#include <stdlib.h>
using namespace std;
//La función que nos va estar dibujando
void Dibuja(){
cerr << "Dibuja()\n";
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT);
/*GL_PROJECTION permite mover el punto de referencia (0,0,0) a donde se le indique*/
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glPushMatrix();//guarda el estado de la matriz, es decir guardará lo
//se dibuje hasta antes del PopMatrix
glTranslatef(-0.5,0.5,0.0);//permite mover el punto de origen de nuestro espacio en (x,y,z)
glScalef(1.2,1.2,1.2);//permite esblecer una escala
glRotatef(45,0,1,1);//permite rotar el angulo según el eje que define el vector (x,y,z)
glColor3f(0.0,1.0,0.0);//se establece el color para la figura a dibujar
//glutSolidSphere(0.2,15,15); //dibuja la esfera solida
glutWireSphere(0.2,15,15);//permite dibujar una esfera definiendo (radio,rebanadas en x,rebanadas en y)
glPopMatrix();//la guarda y la restaura
glPushMatrix();
glTranslatef(0.0,0.7,0.0);
glRotatef(60,1,0,0);
//glRotated(1,0,0,1);
glColor3f(1.0,1.0,0.0);
//glutSolidCone(1,1,slices,stacks);//dibuja un cono solido
glutWireCone(0.2,0.5,22.0,5.0);
glPopMatrix();
glPushMatrix();
glTranslatef(0.59,0.5,0.0);
glRotatef(63,1,0,0);
glColor3f(0.0,1.0,1.0);
//glutSolidTorus(0.2,0.8,slices,stacks);
glutWireTorus(0.05,0.3,12.0,32.0);
glPopMatrix();
glPushMatrix();
glTranslatef(-0.4,-0.4,0.0);
glRotatef(55,9,22,0);
glColor3f(0.2,0.3,0.5);
//glutWireCone(1,1,slices,stacks);//dibuja un cono sin relleno
glutWireCube(0.4);
glPopMatrix();
glPushMatrix();//guarda la matriz
glTranslatef(0.4,-0.4,0.0);
glScalef(1.2,1.2,1.2);//permite esblecer una escala
glRotatef(45,0,1,1);
glColor3f(0.5,0.0,0.5);
glutSolidSphere(0.2,40,22); //dibuja la esfera solida
//glutWireSphere(0.2,15,15);
glPopMatrix();//la guarda y la restaura
glFlush();
}
int main(){
cerr <<"main() \n";
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowSize(700,700);
glutCreateWindow("");
glutDisplayFunc(Dibuja);
glutMainLoop();
}