Actividad#2: piramide 3D
Con los valores de su piramide en 3d diseñe un programa par dibujarlo usando opengl por cada cara de su piramide genere un Glbegin y Glend dibuje primero con lineas y luego cambie a solidos cambiando el color para cada cara Glcolor3f(r,g,b).
Codigo:
#include "stdafx.h"
#include <stdlib.h>
#include <GL/glut.h>
void reshape(int width, int height)/*Esta acción afecta en principio directamente al render, puesto que se está cambiando el tamaño del plano de proyección.*/
{
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-5,5,-5,15,-5,5);/*define la proyección definida por los ejes x,y,z. Estos parámetros demilitan el volumen de vista y son, por este orden: x_mínima, x_máxima, y_mínima, y_máxima, z_mínima, z_máxima,*/
glMatrixMode(GL_MODELVIEW);
}
void display()/*Aquí se define el primer callback. La función pasada como parámetro será llamada cada vez que GLUT determine oportuno que la ventana debe ser redibujada, como al maximizarse, poner otras ventanas por encima y después quitarlas, etc.*/
{
glClear(GL_COLOR_BUFFER_BIT);
//glColor3f(1,1,1);/*Define el color glColor3f(0.5,0.0,1.0);*/
glLoadIdentity();
//Lado 4 - base
glBegin(GL_LINE_LOOP);/*glBegin(GL_TRIANGLES);Funcion para puntos, El inicio se une con el final*/
glColor3f(1,1,1);
glVertex3f(0,-3,3); //Vertice a Formando Lado 4
glVertex3f(-3,0,0); //Vertice b Formando Lado 4
glVertex3f(3,0,0); //Vertice c Formando Lado 4
glEnd();
//Lado 3 - atras
glBegin(GL_LINE_LOOP);/*glBegin(GL_TRIANGLES);Funcion para puntos, El inicio se une con el final*/
glColor3f(1.0f, 1.0f, 0.0f);
glVertex3f(-3,0,0); //Vertice b Formando Lado 3
glVertex3f(3,0,0); //Vertice c Formando Lado 3
glVertex3f(0,12,1.5); //Vertice d Formando Lado 3
glEnd();
//Lado 2 - derecho
glBegin(GL_LINE_LOOP);/*glBegin(GL_TRIANGLES);Funcion para puntos, El inicio se une con el final*/
glColor3f(0,0,1);//color azul
glVertex3f(0,-3,3); //Vertice a Formando Lado 2
glVertex3f(3,0,0); //Vertice c Formando Lado 2
glVertex3f(0,12,1.5); //Vertice d Formando Lado 2
glEnd();
//Lado1 - izquierdo
glBegin(GL_LINE_LOOP);/*glBegin(GL_TRIANGLES);Funcion para puntos, El inicio se une con el final*/
glColor3f(0.0f, 1.0f, 0.0f);//color verde
glVertex3f(0,-3,3); //Vertice a Formando Lado 1
glVertex3f(0,12,1.5); //Vertice d Formando Lado 1
glVertex3f(-3,0,0); //Vertice b Formando Lado 1
glEnd();
glFlush();
}
void init()
{
glClearColor(0,0,0,0);// se borrara el color del buffer
}
int main(int argc, char **argv) //Funcion para crear ventana
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(500,60);//Posicion de la ventana
glutInitWindowSize(600,600);//tamaño de la ventana
glutCreateWindow("Piramide 3D");//Mensaje de la ventana
init();/*activa, define una serie de estados de ogl, antes de pasar el control del programa a la GLUT.*/
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0 ;
}
No hay comentarios:
Publicar un comentario