Programa
#include"stdafx.h"
//librería para utilizar operaciones matemáticas
#include<glut.h>
voidInicializacion(void);
voidDibuja(void);
int main()
{
//inicio del boblebuffering para evitar parpadeo
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
//tamaño de la pantalla
glutInitWindowSize(600,600);
//posición de inicio de la pantalla
glutInitWindowPosition(0,0);
//título de la pantalla
glutCreateWindow("Pirámide cuadrada");
//llamado a inicialización
Inicializacion();
//llamado a dibuja
glutDisplayFunc(Dibuja);
//ciclo para pausar la pantalla
glutMainLoop();
return 0;
}
voidInicializacion(void)
{
//matriz a modificar
glMatrixMode(GL_PROJECTION);
//resetear a la matriz a su estado por default
glLoadIdentity();
//se indica la perspectiva en que se verá
gluPerspective(70,1,0.1,100);
//matriz de transformacion
glMatrixMode(GL_MODELVIEW);
//permiyte trasladar un objeto en el espacio
glTranslated(0,0,-10);
//glRotated permite rotar un objeto
//------------------------------vistas de la pirámide
//--------vista de dos caras
glRotated(50,1,1,0);
ecifica si facetas delantera o
glEnable(GL_CULL_FACE);
//aquí se indica que se van a extraer las facetas traseras
glCullFace(GL_BACK);
//glFrontFace define los poligones de frente o espalda
//GL_CW especifica que los polígonos se verán de frente
glFrontFace(GL_CW);
}
void Dibuja(void)
{
//limpiamos pantalla
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//inicio de dibujo de un cuadrado
//-----base de la piramide--varios colores
//se usa GL_QUADS para crear un cuadrilátero
glBegin(GL_QUADS);
//vértices en 3d
glColor3f(1,0,0);//rojo
glVertex3d(-4,0,-4);//4
glColor3f(1,1,0);//amarillo
glVertex3d(-4,0,4);//3
glColor3f(0,0,1);//azul
glVertex3d(4,0,4);//2
glColor3f(0,1,0);//verde
glVertex3d(4,0,-4);//1
glEnd();
//------------------caras de la pirámide
//para las caras triangulares
//se usará GL_TRIANGLES
//--------Cara 4 amarillo con blanco
glBegin(GL_TRIANGLES);
//vértices en 3d
glColor3f(1,1,1);//blanco
glVertex3d(0,4,0);
glColor3f(1,1,0);
glVertex3d(-4,0,-4);//1
glVertex3d(4,0,-4);//4
glEnd();
//--------Cara 1 rojo con blanco
glBegin(GL_TRIANGLES);
//vértices en 3d
glColor3f(1,1,1);//blanco
glVertex3d(0,4,0);
glColor3f(1,0,0);//rojo
glVertex3d(4,0,-4);
glVertex3d(4,0,4);
glEnd();
//--------Cara 3 verde con blanco
glBegin(GL_TRIANGLES);
//vértices en 3d
glColor3f(1,1,1);//blanco
glVertex3d(0,4,0);
glColor3f(0,1,0);//verde
glVertex3d(-4,0,4);
glVertex3d(-4,0,-4);
glEnd();
//-------Cara 2 azul con blanco
glBegin(GL_TRIANGLES);
//vértices en 3d
glColor3f(1,1,1);//blanco
glVertex3d(0,4,0);
glColor3f(0,0,1);//azul
glVertex3d(4,0,4);
glVertex3d(-4,0,4);
glEnd();
//cambio del bufer oculto al activo
glutSwapBuffers();
}
Suscribirse a:
Entradas (Atom)
No hay comentarios:
Publicar un comentario