Herramientas de usuario

Herramientas del sitio


fw:ogl:xtra2

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
fw:ogl:xtra2 [2009/11/07 20:08]
alfred
fw:ogl:xtra2 [2020/05/09 09:25] (actual)
Línea 1: Línea 1:
 ====== OpenGL (Xtra 2) ====== ====== OpenGL (Xtra 2) ======
-==== GLUT ====+ 
 + 
 + 
 +===== GLUT ====
 +GLUT (openGL Utility Toolkit) es una librería para escribir programas con interface gráfica OpenGL de forma fácil, por lo que da la posibilidad de aprender a programar con OpenGL de una forma muy sencilla 
 + 
 + 
 + 
 + 
 + 
 +==== Instalación y uso ==== 
 +=== En Linux === 
 +Podremos instalar el paquete ''​freeglut'',​ luego para compilar utilizaremos la siguiente línea: 
 +<​code>​ 
 +$ g++ -Wall -o "​%e"​ "​%f"​ -I/​usr/​include/​ImageMagick/​ -lglut -lGL -lGLU -lMagick++ 
 +</​code>​ 
 +=== En Windows === 
 +  * {{fw:​ogl:​glut-3.7.6-bin.zip|GLUT 3.7.6}} 
 +Descomprimiremos este archivo en la carpeta del proyecto y agregaremos las siguientes librerías ''​opengl32.lib''​ y ''​glut32.lib''​. Luego haremos un include de ''​glut.h''​. 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +==== Funciones ==== 
 +=== Inicio === 
 +  * ''​glutInit()'':​ Inicializa GLUT para ser utilizado. Debería recibir por parámetro los parámetros que recibe la función main.  
 +  * ''​glutInitDisplayMode()'':​ Inicializa el display mode, indica cómo se mostrarán los ventanas creadas a partir de GLUT. Acepta un ''​unsigned int''​ como parámetro correspondiente a las distintas flags combinadas por OR (|): 
 +    * ''​GLUT_RGBA''​ 
 +    * ''​GLUT_RGB''​ 
 +    * ''​GLUT_INDEX''​ 
 +    * ''​GLUT_SINGLE''​ 
 +    * ''​GLUT_DOUBLE'',​ double buffering. 
 +    * ''​GLUT_ACCUM''​ 
 +    * ''​GLUT_ALPHA''​ 
 +    * ''​GLUT_DEPTH''​ 
 +    * ''​GLUT_STENCIL''​ 
 +    * ''​GLUT_MULTISAMPLE''​ 
 +    * ''​GLUT_STEREO''​ 
 +    * ''​GLUT_LUMINANCE''​ 
 + 
 +=== Ventana === 
 +  * ''​glutInitWindowSize'',​ recibe dos ''​int''​ que indican el tamaño de la ventana (ancho y alto). 
 +  * ''​glutInitWindowPosition'',​ recibe dos ''​int''​ que indican la posición inicial de la ventana. 
 +  * ''​glutCreateWindow'',​ crea la ventana, recibe una cadena de carácteres correspondientes al título. 
 + 
 +=== Dibujo === 
 +  * ''​glutDisplayFunc'',​ indica cual es la función encargada de dibujar. Recibe ''​(void(*func)(void))'',​ es decir, el nombre de la función que devuelve ''​void''​ y no recibe parámetros. 
 +  * ''​glutPostRedisplay'',​ ordena el redibujo. 
 + 
 +=== Teclado === 
 +  * ''​glutKeyboardFunc'',​ indica la función que se llamará cuando se realice una pulsación de teclado. Recibe por parámetro el nombre de la función, teniendo que ser esta con el siguiente formato: ''​(void(*func)(unsigned char key, int x, int y))''​. 
 +  * ''​glutKeyboardUpFunc'',​ con el mismo formato que la anterior, indica cuando se levanta una tecla. 
 + 
 +=== Otras === 
 +  * ''​glutMainLoop''​ función que inicia el //main loop// de glut, por lo tanto muestra la ventana, la mantiene abierta y se va llamando al bucle principal del programa. 
 +  * ''​glutIdleFunc''​ indica la función que se ejecutará cuando se haga una iteración del main loop. 
 +  * ''​glutTimerFunc''​ indica cada cuanto se ejecutará la función del main loop. 
 + 
 +==== Ejemplos ==== 
 +=== Simple === 
 +<code c> 
 +#include "​glut.h"​ 
 + 
 +void renderScene(void) { 
 + glClear(GL_COLOR_BUFFER_BIT);​ 
 + glBegin(GL_TRIANGLES);​ 
 + glVertex3f(-0.5,​-0.5,​0.0);​ 
 + glVertex3f(0.5,​0.0,​0.0);​ 
 + glVertex3f(0.0,​0.5,​0.0);​ 
 + glEnd(); 
 + glFlush();​ 
 +
 + 
 +void main(int argc, char **argv) { 
 + glutInit(&​argc,​ argv); 
 + glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);​ 
 + glutInitWindowPosition(100,​100);​ 
 + glutInitWindowSize(320,​320);​ 
 + glutCreateWindow("​3D Tech- GLUT Tutorial"​);​ 
 + glutDisplayFunc(renderScene);​ 
 + glutMainLoop();​ 
 +
 +</​code>​
  
 ===== OpenGL en Linux ===== ===== OpenGL en Linux =====
Línea 33: Línea 121:
 GLX es la librería que proporciona un enlace entre las X y OpenGL activando la posibilidad de dibujo 3d sobre las ventanas. Para desarrollar con esta debemos añadir la librería **GL** (compilando con ''​-lGL''​). \\  GLX es la librería que proporciona un enlace entre las X y OpenGL activando la posibilidad de dibujo 3d sobre las ventanas. Para desarrollar con esta debemos añadir la librería **GL** (compilando con ''​-lGL''​). \\ 
 La versión actual de GLX es la 1.3 que corresponde a la OpenGL 1.2. \\  La versión actual de GLX es la 1.3 que corresponde a la OpenGL 1.2. \\ 
 +
  
 ===== OpenGL ES ===== ===== OpenGL ES =====
 +===== WebGL =====
 +
fw/ogl/xtra2.1257624491.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)