Guia rapida de OpenGL para Linux |
| Tipos de Variables Tamaño Correspondencia en C Definición en OpenGL 8-bit integer signed char GLbyte 16-bit integer short GLshort 32-bit integer int or long GLint, GLsizei 32-bit floating-point float GLfloat, GLclampf 64-bit floating-point double GLdouble, GLclampd 8-bit unsigned integer unsigned char GLubyte, GLboolean 16-bit unsigned integer unsigned short GLushort 32-bit unsigned integer unsigned int or unsigned long GLuint, GLenum, GLbitfield glClear borra el buffer especificado. glClear (Valor Tipo de Buffer); Tipo de Buffer Nombre Color GL_COLOR_BUFFER_BIT Profundidad GL_DEPTH_BUFFER_BIT Acumulacion GL_ACCUM_BUFFER_BIT Plantilla GL_STENCIL_BUFFER_BIT Tabla para la unión de vertices para primitivas glColor3f (Rojo,Verde,Azul);Indica el color de rellene en los poligonos glBegin(Tipo); glVertex3f (xVertice,yVertice,zVertice);indica un vertice glVertex3f .......... etc glEnd(); Desde glBegin hasta glEnd se determinan los vertices de un poligono,como se uniran estos vertices biene determinado por glBegin (Tipo) Tabla de union de vertices Tipo Significado GL_POINTS Puntos individuales GL_LINES Cada par de vertices forman una linea GL_LINE_STRIP Todos los vertices forman una linea GL_LINE_LOOP Todos los vertices forman una linea y el 1 y el ultimo se unen GL_TRIANGLES Cada tres vertices se interpretan como un triangulo GL_TRIANGLE_STRIP Todos los vertices se interpretan como un poligono formado por triangulos GL_TRIANGLE_FAN Triangulos alrededor del primer vertice GL_QUADS Une los vertices en grupos de 4 GL_QUAD_STRIP Todos los vertices se interpretan como un poligono formado por cuadrados GL_POLYGON Todos los certices hacen un poligono convexo glOrtho(izquierda,derecha,abajo,arriba,cerca,lejos); Crea una caja virtual,solo seran representados los poligonos que se encuentren dentro de los parametros especificados por la caja el resto seran cortados(clipping). Este sencillo programa crea una malla de triangulos, en la que modemos modificar la altura ,es facil de entender y podremos jugar con la gluLookAt ,glOrtho y la manera de linkar los poligonos. Estructura basica de opengl // malla 27-03-02 www.SorgoNet.com #include <GL/glut.h> GLfloat malla [100][100];//array malla int contador,contador2; GLfloat scala; void display(void) { scala=10; // borra los pixeles glClear (GL_COLOR_BUFFER_BIT); malla [4][4]=3;//algunos picos en la malla malla [5][4]=3.2; malla [6][4]=3.1; malla [4][5]=2.3; for (contador=0;contador < 99;contador=contador+1){ for (contador2=0;contador2 < 99;contador2=contador2+1){ glColor3f (1.0, 1.0,1.0); glBegin(GL_TRIANGLES); glVertex3f (contador/scala, malla[contador][contador2]/scala,contador2/scala); glVertex3f ((contador+1)/scala, malla[contador+1][contador2]/scala,contador2/scala); glVertex3f (contador/scala, malla[contador][contador2+1]/scala,(contador2+1)/scala); glEnd(); /* si actibamos esta parte se añadiran lo triangulos que faltan glBegin(GL_TRIANGLES); glVertex3f ((contador+1)/scala,malla[contador][contador2]/scala,(contador2+1)/scala); glVertex3f ((contador+1)/scala,malla[contador][contador2]/scala,contador2/scala); glVertex3f (contador/scala, malla[contador][contador2]/scala,(contador2+1)/scala ); glEnd();*/ }} //comienza el proceso en el buffer de OpenGl glFlush(); } void init (void) { /* selecciona el color de borrado */ glClearColor (0.0, 0.0, 0.0, 0.0); /* inicializa las vistas */ gluLookAt(-0.20,-0.250,0.0,-0.5,0.5,-2.0,0.0,1.0,0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 1.0, 0.0, 1.0, -10.0, 1000.0); } static void key(unsigned char k, int x, int y) { switch (k) { case 27: /* Escape */ exit(0); break; default: return; } glutPostRedisplay(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow ("Hola"); init (); glutDisplayFunc(display); glutKeyboardFunc(key); glutMainLoop(); return 0; } La camara viene determinada por la funcion gluLookAt,si no la utilizamos en nuestros programa se utilizara la camara por defecto. gluLookat (0.0, 0.0, 0.0, 0.0, 0.0, -100.0, 0.0, 1.0, 0.0); gluLookAt(xPosicion,yPosicion,zPosicion,xRotacion,yRotacion,zRotacion,xDireccion,yDireccion,zDireccion); Para Compilar un programa gcc -O NOMBRE.C -o NOMBREEJECUTABLE -lglut |