1 intro opengl visualización computacional 2. 2 ¿qué es opengl? opengl es una biblioteca para el...
TRANSCRIPT
11
Intro OpenGLIntro OpenGL
Visualización Computacional 2Visualización Computacional 2
22
¿Qué es OpenGL?¿Qué es OpenGL?
OpenGL es una biblioteca para el desarrollo de OpenGL es una biblioteca para el desarrollo de gráficos por computadora en 2D y 3D multiplataforma gráficos por computadora en 2D y 3D multiplataforma (Linux, Windows, Unix, MacOS, PS3)(Linux, Windows, Unix, MacOS, PS3)
Su nombre proviene de Open Graphics LibrarySu nombre proviene de Open Graphics Library
Es una especificación que define una API Es una especificación que define una API (del inglés (del inglés Application Programming Interface - Interfaz de Application Programming Interface - Interfaz de Programación de Aplicaciones) para la programación Programación de Aplicaciones) para la programación de gráficos en varios lenguajesde gráficos en varios lenguajes
Nota: Referencias de OpenGL Programming Guide, 3rd Edition ver. 1.2(“The Red Book”).
33
Documentación disponibleDocumentación disponible
El Libro RojoEl Libro Rojo - The Red Book: The OpenGL Programmer's - The Red Book: The OpenGL Programmer's guide. guide. Libro de referencia y tutorial. Libro Libro de referencia y tutorial. Libro de cabecerade cabecera para para
programadores de OpenGL.programadores de OpenGL.
El Libro AzulEl Libro Azul - The Blue Book: The OpenGL Reference - The Blue Book: The OpenGL Reference manual. manual. En esencia, una copia de la páginas del manual de En esencia, una copia de la páginas del manual de
OpenGL.OpenGL.
44
Características de OpenGLCaracterísticas de OpenGL
ObjetivosObjetivos1.1. Ocultar complejidad de HardwareOcultar complejidad de Hardware2.2. Ocultar las capacidades del HardwareOcultar las capacidades del Hardware
Propósito: Dibujado (puntos, líneas, Propósito: Dibujado (puntos, líneas, polígonos)polígonos)
OpenGL como una Máquina de OpenGL como una Máquina de estados (o switches)estados (o switches)
55
OpenGL tiene…OpenGL tiene…
Funciones para dibujar en 2D y 3DFunciones para dibujar en 2D y 3D TransformacionesTransformaciones Algoritmos de iluminaciónAlgoritmos de iluminación Z-BufferingZ-Buffering Mapeo de TexturasMapeo de Texturas Soporte para ShadersSoporte para Shaders Blending, elementos de antialiasing , Blending, elementos de antialiasing ,
efectos de Fogefectos de Fog
66
OpenGL no tiene…OpenGL no tiene…
Funciones para manejar ventanas, eventos Funciones para manejar ventanas, eventos de ratón o teclado de ratón o teclado
Funciones o procedimientos para crear un Funciones o procedimientos para crear un objeto completo a partir de una descripción objeto completo a partir de una descripción natural ejemplo: comando drawCar();natural ejemplo: comando drawCar();
Soporte nativo para dibujado de curvasSoporte nativo para dibujado de curvas Soporte nativo para audio y/o textoSoporte nativo para audio y/o texto Detección de colisionesDetección de colisiones Carga de imágenesCarga de imágenes
77
Elementos necesariosElementos necesarios
Biblioteca OpenGLBiblioteca OpenGL Archivos de cabecera (.h, .pas, etc.)Archivos de cabecera (.h, .pas, etc.) Archivos obj o libArchivos obj o lib Verificar el soporte dentro de la Verificar el soporte dentro de la
plataforma elegida y bibliotecas para su plataforma elegida y bibliotecas para su ejecuciónejecución
Bibliotecas auxiliares (GLU, Glut)Bibliotecas auxiliares (GLU, Glut)
88
Qué pasa con lo que no Qué pasa con lo que no tienetiene
Y las ventanas , mouse, teclado????Y las ventanas , mouse, teclado???? GLUT GL Utility ToolkitGLUT GL Utility Toolkit API de Win32API de Win32 IDE de desarrollo (forms, eventos, etc.)IDE de desarrollo (forms, eventos, etc.)
Imágenes Imágenes SDL ImageSDL Image DevilDevil
SonidoSonido SDL MixerSDL Mixer OpenALOpenAL fmodfmod
99
Sintaxis BásicaSintaxis Básica
OpenGL contiene 3 elementos OpenGL contiene 3 elementos distintos básicos:distintos básicos: FuncionesFunciones ConstantesConstantes Tipos de datosTipos de datos
1010
FuncionesFunciones
UsosUsos Dibujado de elementosDibujado de elementos Manipulación de proyeccionesManipulación de proyecciones Transformaciones GeométricasTransformaciones Geométricas Habilitación / Deshabilitación de “switches”Habilitación / Deshabilitación de “switches” TexturizadoTexturizado Aplicación de elementos para lograr Aplicación de elementos para lograr
iluminacióniluminación Cuenta con 150 funciones básicasCuenta con 150 funciones básicas
1111
Sintaxis de funcionesSintaxis de funciones Se anteponen gl si pertenecen a la biblioteca Se anteponen gl si pertenecen a la biblioteca
OpenGL, glu o glut si son de éstas respectivamenteOpenGL, glu o glut si son de éstas respectivamente
Contienen información al final de cuántos Contienen información al final de cuántos parámetros reciben y cuál es su tipoparámetros reciben y cuál es su tipo
Ejemplos:Ejemplos: glVertex3fglVertex3f glVertex4fvglVertex4fv glVertex2iglVertex2i
1212
OpenGL Vertex/Color OpenGL Vertex/Color Command FormatsCommand FormatsglVertex3fv( v )
Number ofcomponents
2 - (x,y) 3 - (x,y,z), (r,g,b)4 - (x,y,z,w), (r,g,b,a)
Data Typeb - byteub - unsigned bytes - shortus - unsigned shorti - intui - unsigned intf - floatd - double
Vector
omit “v” forscalar form–
e.g.,glVertex2f(x, y)glColor3f(r, g, b)
glColor3fv( v )
1313
ConstantesConstantes UsosUsos
Activar o desactivar ciertas propiedades de Activar o desactivar ciertas propiedades de dibujado o switchesdibujado o switches
Dar ciertos valores a parámetros de funciones Dar ciertos valores a parámetros de funciones que configuran algún elementoque configuran algún elemento
Todos van con mayúsculas empezando con Todos van con mayúsculas empezando con GL y generalmente tienen _ cuando GL y generalmente tienen _ cuando presentan espacios, ya que sus nombres presentan espacios, ya que sus nombres son muy descriptivos acerca de para que son muy descriptivos acerca de para que sirvensirven
1414
ConstantesConstantes
Ej.Ej. GL_LIGHTINGGL_LIGHTING GL_COLOR_BUFFER_BITGL_COLOR_BUFFER_BIT GL_LINESGL_LINES
También las encontramos en GLUTTambién las encontramos en GLUT
Ej.Ej. GLUT_LEFT_BUTTONGLUT_LEFT_BUTTON
1515
BuffersBuffers
Color BufferColor Buffer Depth BufferDepth Buffer Stencil BufferStencil Buffer Accumulation Buffer Accumulation Buffer Selection BufferSelection Buffer
1616
El Front Buffer es lo que vemos en pantalla finalmente.El Front Buffer es lo que vemos en pantalla finalmente. Se renderiza en Back buffer, luego se llama a Se renderiza en Back buffer, luego se llama a
SwapBuffersSwapBuffers
Accumulation BufferStencil Buffer
Depth BufferBack Buffer
Texture 1
Texture 2
Texture 3
Window decoration
Front Buffer
1717
OpenGL – Depth Buffer, Double OpenGL – Depth Buffer, Double BufferBuffer
Los buffers almacenan color y profundidadLos buffers almacenan color y profundidad Eliminación de partes ocultas.Eliminación de partes ocultas. glEnable (GL_DEPTH_TEST); glEnable (GL_DEPTH_TEST);
Double buffering:Double buffering: Dibujar en un buffer mientras se está mostrando otro.Dibujar en un buffer mientras se está mostrando otro. Cuando se termina de renderizar, se intercambian los dos.Cuando se termina de renderizar, se intercambian los dos. glutSwapBuffers(); // al finalizar el bucle de glutSwapBuffers(); // al finalizar el bucle de
renderingrendering Borrando buffers:Borrando buffers:
// Borrar la pantalla con un color específico.// Borrar la pantalla con un color específico.glClearColor (0.0, 0.0, 0.0, 0.0);glClearColor (0.0, 0.0, 0.0, 0.0);
// Borrar color y depth buffers.// Borrar color y depth buffers.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
1818
Máquina de estadosMáquina de estados
Set:Set: glPointSize(glPointSize(sizesize);); glLineWidth(width);glLineWidth(width); glLineStipple(glLineStipple(repeatrepeat, , patternpattern);); glShadeModel(glShadeModel(GLGL__SMOOTHSMOOTH););
Get: Get: glGet*();glGet*();
Habilitaciones:Habilitaciones: glEnable(glEnable(GLGL__LIGHTINGLIGHTING);); glDisable(glDisable(GL_TEXTURE_2DGL_TEXTURE_2D);); glIsEnable(GL_DEPTH_TEST);glIsEnable(GL_DEPTH_TEST);
1919
Seteando estadosSeteando estados
OpenGL es una máquina de estados: los polígonos son OpenGL es una máquina de estados: los polígonos son afectados por el color, la transformación, el modo de afectados por el color, la transformación, el modo de render actuales.render actuales.
Habilitar y deshabilitar opciones como iluminación, uso Habilitar y deshabilitar opciones como iluminación, uso de texturas y alpha blending.de texturas y alpha blending.
glEnable (GL_LIGHTING); glEnable (GL_LIGHTING); // habilitar lighting (disabled por // habilitar lighting (disabled por default)default)
Olvidarse de habilitar/deshabilitar algo es el origen más Olvidarse de habilitar/deshabilitar algo es el origen más común de los bugs. Corroborar siempre el estado de las común de los bugs. Corroborar siempre el estado de las variables que necesitamos y sus valores por default. variables que necesitamos y sus valores por default. (lista de defaults en Apéndice B).(lista de defaults en Apéndice B).
2020
Mini “engine” Mini “engine” (método draw)(método draw)
Borrar contenido del buffer actualBorrar contenido del buffer actual Setear transformaciones (View Setear transformaciones (View
Projection, Viewport transf.) Projection, Viewport transf.) Loop para cada primitiva:Loop para cada primitiva:
TransformacionesTransformaciones Tipo de primitiva, atributos, estados de Tipo de primitiva, atributos, estados de
renderrender Flush o Swap buffersFlush o Swap buffers
2121
Transformaciones y Vista Transformaciones y Vista (Cap.3)(Cap.3)
OpenGL tiene 3 modos distintos de matrices:OpenGL tiene 3 modos distintos de matrices: GL_MODELVIEWGL_MODELVIEW GL_PROJECTIONGL_PROJECTION GL_TEXTUREGL_TEXTURE Por ejemplo, para trabajar con modo projection matrix: Por ejemplo, para trabajar con modo projection matrix:
glMatrixMode(GL_PROJECTION);glMatrixMode(GL_PROJECTION);
La matriz La matriz ModelviewModelview se usa para las transformaciones en los se usa para las transformaciones en los objetos.objetos.
La matrix La matrix ProjectionProjection setea la transformación de perspectiva. setea la transformación de perspectiva. Generalmente se setea una vez al comienzo del programa.Generalmente se setea una vez al comienzo del programa.
La matriz La matriz TextureTexture es usada para aplicar transformaciones a las es usada para aplicar transformaciones a las coordenadas de textura.coordenadas de textura.
2222
MVPVMVPV
2323
Operaciones de matricesOperaciones de matrices
glMatrixMode()glMatrixMode() GL_PROJECTIONGL_PROJECTION GL_MODELVIEWGL_MODELVIEW GL_TEXTUREGL_TEXTURE
glLoadIdentity()glLoadIdentity() glLoadMatrix()glLoadMatrix() glMultMatrix()glMultMatrix() glPushMatrix() glPushMatrix() glPopMatrix() glPopMatrix()
2424
Multiplicación de matricesMultiplicación de matrices
glMatrixMode(GL_MODELVIEW);glMatrixMode(GL_MODELVIEW); glLoadIdentity();glLoadIdentity(); glMultMatrix(N);glMultMatrix(N); glMultMatrix(M);glMultMatrix(M); glMultMatrix(L);glMultMatrix(L);
glBegin(GL_POINTS);glBegin(GL_POINTS); glVertex3f(v);glVertex3f(v); glEnd();glEnd();
La transormación final es N(M(Lv))La transormación final es N(M(Lv))
2525
Transformaciones de Transformaciones de modelosmodelos
Mover/trasladar objetoMover/trasladar objetoglTranslate{234}{fd}( glTranslate{234}{fd}( x, y, zx, y, z ) )
Rotar el objeto en un eje arbitrarioRotar el objeto en un eje arbitrarioglRotate{234}{fd}( glRotate{234}{fd}( angle, x, y, zangle, x, y, z ) )
Escalar, deformar, espejar objetoEscalar, deformar, espejar objetoglScale{234}{fd}( glScale{234}{fd}( x, y, zx, y, z ) )
http://www.xmission.com/~nate/tutors.html
Tutoriales de Nate Robins:
2626
El orden es importanteEl orden es importante
Internamente se define un nuevo espacio de coordenadas “local” en términos del espacio de coordenadas anterior.
2727
Primitivas en glBegin Primitivas en glBegin (Cap.2, p.44)(Cap.2, p.44)
PuntosPuntos GL_POINTSGL_POINTS LíneasLíneas GL_LINES, GL_LINE_STRIP, GL_LINE_LOOPGL_LINES, GL_LINE_STRIP, GL_LINE_LOOP TriángulosTriángulos GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FANGL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN CuadradosCuadrados GL_QUADS, GL_QUAD_STRIPGL_QUADS, GL_QUAD_STRIP PolígonosPolígonos GL_POLYGONGL_POLYGON
glBegin(GL_LINES); [invocaciones glVertex];glEnd();
glBegin(GL_QUADS); [invocaciones glVertex];glEnd();
2828
OpenGL: Normales y LucesOpenGL: Normales y Luces Especificar normales de manera simple como Especificar normales de manera simple como
especificamos geometría.especificamos geometría. Normalizar vectores de normales.Normalizar vectores de normales.
// each vertex has a different normal here// each vertex has a different normal hereglColor3f (0.8, 1.0, 0.5);glColor3f (0.8, 1.0, 0.5);glBegin(GL_TRIANGLES);glBegin(GL_TRIANGLES);
glNormal3fv (n0);glNormal3fv (n0);glVertex3fv (v0);glVertex3fv (v0);glNormal3fv (n1);glNormal3fv (n1);glVertex3fv (v1);glVertex3fv (v1);glNormal3fv (n2);glNormal3fv (n2);glVertex3fv (v2);glVertex3fv (v2);
glEnd();glEnd();
// all vertices have the same normal here// all vertices have the same normal hereglBegin(GL_TRIANGLES);glBegin(GL_TRIANGLES);
glNormal3fv (n0);glNormal3fv (n0);glVertex3fv (v0);glVertex3fv (v0);glVertex3fv (v1);glVertex3fv (v1);glVertex3fv (v2);glVertex3fv (v2);
glEnd();glEnd();
2929
OpenGL: Luces OpenGL: Luces (Cap.5 p.173)(Cap.5 p.173)
glEnable (GL_LIGHTING);glEnable (GL_LIGHTING); OpenGL soporta un máximo de 8 luces.OpenGL soporta un máximo de 8 luces.
glEnable (GL_LIGHT0);glEnable (GL_LIGHT0);......glEnable (GL_LIGHT7);glEnable (GL_LIGHT7);
Las luces tienen una posición, un tipo, color, etc.Las luces tienen una posición, un tipo, color, etc. Posición:Posición:
float light0Position[4] = {1.0, 0.0, 4.0, 1.0};float light0Position[4] = {1.0, 0.0, 4.0, 1.0};glLightfv (GL_LIGHT0, GL_POSITION, light0Position);glLightfv (GL_LIGHT0, GL_POSITION, light0Position);
El tipo de una luz es puntual, direccional y spot. El cuarto El tipo de una luz es puntual, direccional y spot. El cuarto componente de la posición (1.0 en el ejemplo) determina el tipo. componente de la posición (1.0 en el ejemplo) determina el tipo. 0 es para luces direccionales, 1 es para luces puntuales o spots. 0 es para luces direccionales, 1 es para luces puntuales o spots. (pág. 187)(pág. 187)
Podemos setear componentes de : Ambient, Diffuse, Specular Podemos setear componentes de : Ambient, Diffuse, Specular para cada luz.para cada luz.Mirar el texto en el libro.Mirar el texto en el libro.
3030
OpenGL: Lighting (cont.)OpenGL: Lighting (cont.)
OpenGL soporta 2 modelos básicos de shading: flat y OpenGL soporta 2 modelos básicos de shading: flat y smooth.smooth.
glShadeModel(GL_FLAT);glShadeModel(GL_FLAT); glShadeModel(GL_SMOOTH);glShadeModel(GL_SMOOTH);
3131
OpenGL: Propiedades de OpenGL: Propiedades de material material (Cap.5)(Cap.5)
Se pueden especificar diferentes propiedades de Se pueden especificar diferentes propiedades de material para los polígonos.material para los polígonos. Usar Usar glMaterial*(GLenum face, GLenum pname, TYPE param);glMaterial*(GLenum face, GLenum pname, TYPE param);
Ejemplos Ejemplos ((pnamepname), pág. 202:), pág. 202: GL_AMBIENT: Ambient color del materialGL_AMBIENT: Ambient color del material GL_DIFFUSE: Diffuse color del materialGL_DIFFUSE: Diffuse color del material GL_SPECULAR: GL_SPECULAR: ComponenteComponente Specular Specular GL_SHININESS: Exponente Specular GL_SHININESS: Exponente Specular
3232
OpenGL: TexturingOpenGL: Texturing
Cargar los datos en crudoCargar los datos en crudo Provienen de una imagen: tga, bmp, jpgProvienen de una imagen: tga, bmp, jpg Creados en tiempo de ejecuciónCreados en tiempo de ejecución El resultado final es siempre un arregloEl resultado final es siempre un arreglo
Setear valores de entornoSetear valores de entorno Crear nombres de textura, construir Mipmaps, Crear nombres de textura, construir Mipmaps,
setear filtros, etc.setear filtros, etc. Mapear la textura a los polígonosMapear la textura a los polígonos
Especificar coordenadas s,t para los vértices del Especificar coordenadas s,t para los vértices del polígono.polígono.
3333
OpenGL: TexturingOpenGL: Texturing
Cargar los datosCargar los datos Unidades y clases que cargan imágenes.Unidades y clases que cargan imágenes.
Setear valores de entornoSetear valores de entorno Crear nombre de texturaCrear nombre de textura
glGenTextures(int num, int* texNames)glGenTextures(int num, int* texNames) glBindTexture(GL_TEXTURE_2D, texName);glBindTexture(GL_TEXTURE_2D, texName);
Escala, aplicación y MipmappingEscala, aplicación y Mipmapping gluScaleImage(…)gluScaleImage(…) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);GL_CLAMP);
gluBuild2DMipmaps(…);gluBuild2DMipmaps(…);
3434
Creación de appsCreación de apps
GLUTGLUT Forms y handlesForms y handles Api de WindowsApi de Windows
3535
GLUT – OpenGL Utility ToolkitGLUT – OpenGL Utility Toolkit
(Apéndice D)(Apéndice D)
GLUT es una librería que maneja los eventos del sistema y las ventanas GLUT es una librería que maneja los eventos del sistema y las ventanas de la aplicación en múltiples plataformas.de la aplicación en múltiples plataformas.
Ejemplo código:Ejemplo código:
int main (int argc, char *argv[])int main (int argc, char *argv[]){{
glutInit(&argc, argv);glutInit(&argc, argv);glutInitDisplayMode (GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);glutInitDisplayMode (GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);glutInitWindowSize (windowWidth, windowHeight); glutInitWindowSize (windowWidth, windowHeight); glutInitWindowPosition (0, 0);glutInitWindowPosition (0, 0);glutCreateWindow (“248 Video Game!");glutCreateWindow (“248 Video Game!");
SetStates();SetStates(); // Initialize any rendering states (your code).// Initialize any rendering states (your code).RegisterCallbacks(); RegisterCallbacks(); // Set up event callbacks (your code, coming up).// Set up event callbacks (your code, coming up).
glutMainLoop();glutMainLoop(); // Transfer control to GLUT. Doesn’t return.// Transfer control to GLUT. Doesn’t return.return 0;return 0;
}}
3636
GLUT Event CallbacksGLUT Event Callbacks
Registrar funciones que son llamadas cuando un Registrar funciones que son llamadas cuando un determinado evento ocurre.determinado evento ocurre.
Ejemplos:Ejemplos:
glutDisplayFunc( Display );glutDisplayFunc( Display ); // called when its time to // called when its time to drawdrawglutKeyboardFunc( Keyboard );glutKeyboardFunc( Keyboard ); // receives key input// receives key inputglutReshapeFunc( Reshape );glutReshapeFunc( Reshape ); // called when window // called when window reshapesreshapesglutMouseFunc( Mouse );glutMouseFunc( Mouse ); // called when button changes// called when button changesglutPassiveMotionFunc( PassiveFunc );glutPassiveMotionFunc( PassiveFunc ); // mouse moves, no buttons// mouse moves, no buttonsglutMotionFunc( MouseDraggedFunc );glutMotionFunc( MouseDraggedFunc ); // mouse moves, some buttons// mouse moves, some buttonsglutIdleFunc( Idle );glutIdleFunc( Idle ); // called whenever idle// called whenever idle
3737
Forms y Handles (llamadas a Forms y Handles (llamadas a API win32)API win32)
Ejemplo código:Ejemplo código:
procedure TForm1.FormCreate(Sender: TObject);procedure TForm1.FormCreate(Sender: TObject);beginbegin initOpengl;initOpengl; dc:=GetDC(Panel1.Handle);dc:=GetDC(Panel1.Handle); initPixelFormat();initPixelFormat(); rc :=wglCreateContext(dc);rc :=wglCreateContext(dc); wglMakeCurrent(dc,rc);wglMakeCurrent(dc,rc); glInit;glInit; Resize();Resize();end;end;
3838
Api de WindowsApi de Windows Utilizamos la API de windows para crear nuestra propia ventana y manejar nuestros Utilizamos la API de windows para crear nuestra propia ventana y manejar nuestros
eventos.eventos.
Ejemplo código:Ejemplo código:
function glCreateWnd(Width, Height : Integer; Fullscreen : Boolean; PixelDepth : Integer) : Boolean;function glCreateWnd(Width, Height : Integer; Fullscreen : Boolean; PixelDepth : Integer) : Boolean;varvar……beginbegin h_Instance := GetModuleHandle(nil); //Grab An Instance For Our Windowh_Instance := GetModuleHandle(nil); //Grab An Instance For Our Window ZeroMemory(@wndClass, SizeOf(wndClass)); // Clear the window class structureZeroMemory(@wndClass, SizeOf(wndClass)); // Clear the window class structure
with wndClass do // Set up the window classwith wndClass do // Set up the window class beginbegin style := CS_HREDRAW or // Redraws entire window if length changesstyle := CS_HREDRAW or // Redraws entire window if length changes CS_VREDRAW or // Redraws entire window if height changesCS_VREDRAW or // Redraws entire window if height changes CS_OWNDC; // Unique device context for the windowCS_OWNDC; // Unique device context for the window lpfnWndProc := @WndProc; // Set the window procedure to our func WndProclpfnWndProc := @WndProc; // Set the window procedure to our func WndProc hInstance := h_Instance;hInstance := h_Instance; hCursor := LoadCursor(0, IDC_ARROW);hCursor := LoadCursor(0, IDC_ARROW); lpszClassName := 'OpenGL';lpszClassName := 'OpenGL'; end;end;
………………
3939
Bindings - OpenGLBindings - OpenGL
ASM Code ASM Code Borland C++ Builder 6 Borland C++ Builder 6 BeOS BeOS C# Code C# Code VB.Net CsGL VB.Net CsGL Code Warrior 5.3 Code Warrior 5.3 Cygwin Cygwin D Language D Language Delphi Delphi Dev C++ Dev C++ Game GLUT Game GLUT GLUT Code GLUT Code Irix Code Irix Code Java Code Java Code Java/SWT CJava/SWT C Jedi-SDL Jedi-SDL JoGL JoGL LCC Win32LCC Win32 Linux Linux Linux/GLX Linux/GLX Linux/SDLLinux/SDL
LWJGL LWJGL Mac OSMac OS Mac OS X/Cocoa Mac OS X/Cocoa MASM MASM Power Basic Power Basic Pelles CPelles C Perl Perl Python Python QT/C++ QT/C++ REALbasic REALbasic Ruby Ruby Scheme Scheme Solaris Solaris Visual Basic Visual Basic Visual Fortran Visual Fortran Visual Studio .NETVisual Studio .NET
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=02
4040
Ejemplos - TutorialesEjemplos - Tutoriales
BSP Loader
4141
Ejemplos - TutorialesEjemplos - Tutoriales
Fog
4242
Ejemplos - TutorialesEjemplos - Tutoriales
Fuentes
4343
Ejemplos - TutorialesEjemplos - Tutoriales
Heightmap, Multitextura, Skybox
4444
Ejemplos - TutorialesEjemplos - Tutoriales
MD3 Loader - Animación
4545
Ejemplos - TutorialesEjemplos - Tutoriales
Wavefront OBJ Loader
4646
Ejemplos - TutorialesEjemplos - Tutoriales
Selección
4747
Ejemplos - TutorialesEjemplos - Tutoriales
Partículas
4848
Ejemplos - TutorialesEjemplos - Tutoriales
Render to texture
4949
Ejemplos - TutorialesEjemplos - Tutoriales
Skyboxes
5050
Ejemplos - TutorialesEjemplos - Tutoriales
Variados
5151
Trabajos PrácticosTrabajos Prácticos
Salón de exposiciones:Salón de exposiciones: Datos en pantallaDatos en pantalla Environment Mapping (modelo)Environment Mapping (modelo) Sombras y/o reflejos (habitación)Sombras y/o reflejos (habitación) Efecto adicional (blending, lightmaps)Efecto adicional (blending, lightmaps)
5252
Trabajos PrácticosTrabajos Prácticos
Juego de ajedrez:Juego de ajedrez: Transparencias (piezas)Transparencias (piezas) Reflejos (sobre tablero) o Environment Reflejos (sobre tablero) o Environment
Mapping (piezas)Mapping (piezas) Sombras (tablero)Sombras (tablero) Selección de objetos en 3DSelección de objetos en 3D
5353
Trabajos PrácticosTrabajos Prácticos Shoot Game:Shoot Game:
Efectos con partículasEfectos con partículas Modelos animadosModelos animados Transparencias o máscaras de texturaTransparencias o máscaras de textura Selección de objetos en 3DSelección de objetos en 3D
5454
Trabajos PrácticosTrabajos Prácticos Mundos virtuales (elegir algunas):Mundos virtuales (elegir algunas):
NieblaNiebla Máscaras de texturaMáscaras de textura TransparenciasTransparencias Reflejos y/o environment mappingReflejos y/o environment mapping SombrasSombras Sistemas de partículasSistemas de partículas Modelos 3DModelos 3D
5555
Trabajos PrácticosTrabajos Prácticos
Otros:Otros: Heightmap (niveles)Heightmap (niveles) SombrasSombras Modelos animadosModelos animados ColisionesColisiones SkyboxesSkyboxes Efectos de partículasEfectos de partículas Técnicas + DOCTécnicas + DOC
5656
Próximos pasosPróximos pasos
En la web: (próximamente)En la web: (próximamente) Tutoriales y ejemplos.Tutoriales y ejemplos. Lista de trabajos posibles para realizar.Lista de trabajos posibles para realizar. Links de interés.Links de interés.
Busquen (o nos piden):Busquen (o nos piden): Recursos (3ds, bsp, MD3)Recursos (3ds, bsp, MD3)
En Diciembre:En Diciembre: Definición de que trabajo van a realizar.Definición de que trabajo van a realizar.
Consultas vía MAIL (claridad e info):Consultas vía MAIL (claridad e info): [email protected]@exa.unicen.edu.ar [email protected]@gmail.com