Está en la página 1de 24

Introduccin al OpenGL

Breve Resea del OpenGL


1983 IRIS GL se utiliza con la terminal SGI IRIS 1000

1987 SGI y Pixar consideran desarrollar juntos un nuevo API


1991 Se crea el ARB para OpenGL (Architectural Review Board) 1992 OpenGL 1.0 se completa 1995 OpenGL 1.1 1998 OpenGL 1.2 2001 OpenGL 1.3
(Junio 30)

(vertex array, texture objects, new texenvmodes)

1997 acuerdo entre SGI y Microsoft


(3D textures, separate specular, imaging) (multi-texture)

1999 OpenGL 1.2.1

(compressed texture, cube maps, multisample,dot3)

2002 OpenGL 1.4 (mip-map generation, shadows, point parameters)


2003 OpenGL 1.5 (vertex buffer objects, occlusion query)
Extensiones aprobadas por el ARB: OpenGL Shading language, ARB_vertex_program, ARB_fragment_program

2004 OpenGL 2.0

2006 OpenGL 2.1


2008 OpenGL 3.0

(Khronos group)

2009 OpenGL 3.1, 3.2 2010 OpenGL 3.3, 4.0, 4.1

ARB (Architectural Review Board) Original


SGI Digital Equipment Corporation

IBM
Intel Microsoft Sun Microsystems

Hewlett-Packard
Dell Apple 3DLabs

ATI
Nvidia Matrox

Algunas ventajas de utilizar OpenGL

Estndar en la industria 3D Tecnologa abierta (OpenSource)

Estable: 9 aos de existencia


Portable Escalable

Fcil de usar
Excelente documentacin Mecanismos de extensin

Compatibilidad con versiones anteriores

Portabilidad
Unix Windows Linux Mac OS C/C++/C# Visual Basic

Java
Fortran Ada Perl Python

Esquema general

Aplicacin Libreras OpenGL Sistema Grfico Driver Tarjeta Grfica Hardware OpenGL

Libreras de OpenGL

GL (Graphics Library)
Se encuentran las funciones bsicas de OpenGL. (opengl32.lib)

GLU: (Graphics Library Utilities)


Se encuentran otras funciones de soporte tales como modelos contenidos. (glu32.lib)

GLUT: (Graphics Library Utilities Toolkit)


Manejo de interfases I/O: ventanas, eventos, mouse, teclado, etc. (glut32.lib)

Instalacin de OpenGL en Windows / Visual Studio 6


Windows
C: \ Windows \ System32 \
opengl32.dll glu32.dll glut32.dll

Visual C++ Externo

C: \ Program Files \ Microsoft Visual Studio 6.0 \ VC98 \ Lib


opengl32.lib glu32.lib glut32.lib

C: \ Program Files \ Microsoft Visual Studio 6.0 \ VC98 \ Include \ GL


gl.h glu.h glut.h

Instalacin de OpenGL en Windows / Visual Studio .NET 2003


Windows
C: \ Windows \ System32 \
opengl32.dll glu32.dll glut32.dll

Visual C++ Externo

C:\Program Files\ Microsoft Visual Studio 7\ VC\ PlatformSDK\ lib


opengl32.lib glu32.lib glut32.lib

C:\Program Files\ Microsoft Visual Studio 7\ VC\ PlatformSDK\ Include\ gl


gl.h glu.h glut.h

Instalacin de OpenGL en Windows / Visual Studio .NET 2005


Windows
C: \ Windows \ System32 \
opengl32.dll glu32.dll glut32.dll

Visual C++ Externo

C:\Program Files\ Microsoft Visual Studio 8\ VC\ PlatformSDK\ lib


opengl32.lib glu32.lib glut32.lib

C:\Program Files\ Microsoft Visual Studio 8\ VC\ PlatformSDK\ Include\ gl


gl.h glu.h glut.h

Instalacin de OpenGL en Windows / Visual Studio .NET 2008 y Express 2008


Windows
C: \ Windows \ System32 \
opengl32.dll glu32.dll glut32.dll

Visual C++ Externo

C:\Program Files\ Microsoft SDKs\ Windows\ v6.0A\ lib


opengl32.lib glu32.lib glut32.lib

C:\Program Files\ Microsoft SDKs\ Windows\ v6.0A \ Include\ gl


gl.h glu.h glut.h

Instalacin de OpenGL en Windows / Visual Studio .NET 2010 y Express 2010


Windows
C: \ Windows \ System32 \
opengl32.dll glu32.dll glut32.dll

Visual C++ Externo

C:\Program Files\ Microsoft SDKs\ Windows\ v7.0A\ lib


opengl32.lib glu32.lib glut32.lib

C:\Program Files\ Microsoft SDKs\ Windows\ v7.0A \ Include\ gl


gl.h glu.h glut.h

Donde obtener el OpenGL?


ftp://ftp.microsoft.com/softlib/mslfiles/opengl95.exe
(para obtener OpenGL: gl.h, glu.h, opengl32.lib, glu32.lib, opengl32.dll, glu32.dll)

http://www.opengl.org/resources/libraries/glut.html
(para obtener el GLUT: glut.h, glut32.lib, glut32.dll)

http://www.sgi.com
(sitio oficial Silicon Graphics)

http://www.opengl.org
(sitio oficial del OpenGL)

http://www.mesa3d.org
(implementacin pblica de OpenGL)

http://developer.apple.com/graphicsimaging/download/index.html
(OpenGL para Apple)

Tipos de datos en OpenGL

b s i ub us ui

f d

GLbyte GLshort GLint GLsizei GLubyte GLboolean GLushort GLunit GLenum GLbitfield GLfloat GLclampf GLdouble GLclampd

Entero de 8 bits Entero de 16 bits Entero de 32 bits Entero de 8 bits sin signo Entero de 16 bits sin signo Entero de 32 bits sin signo

signed char short int / long unsigned short unsigned short unsigned int / unsigned long

Flotante de 32 bits Flotante de 64 bits

float double

Funciones Callback
Display glutDisplayFunc( )

Se invoca cuando el sistema determina que el contenido de la ventana tiene que ser redibujado. Ejemplos: cuando la ventana se abre o cuando otra ventana se coloca delante de ella y la obstruye parcialmente

Reshape

glutReshapeFunc( )

Se invoca cuando la ventana cambia de dimensiones, normalmente porque el usuario arrastra los bordes de la misma con el mouse.

Mouse

glutMouseFunc( )

Maneja los eventos producidos por el mouse. Por ejemplo las coordenadas en la pantalla y que los botones se opriman o se suelten.

Keyboard

glutKeyboardFunc( )

Maneja los eventos producidos por el teclado. Por ejemplo la tecla que es oprimida

Otras

Idle, Timer, Special, Joystick, etc.

Estructura de los nombres de funciones en OpenGL Ejemplo: glVertex2i

gl

Vertex

librera
gl glu glut

funcin

argumentos
1 2 3 4

tipo
b s i ub us ui f d

Estructura de los nombres de funciones en OpenGL


Ejemplos: glVertex2i glVertex2f glVertex3i glVertex3f glColor3f glColor4i glClearColor glutInit glutMainLoop gluOrtho2D glVertex2i glVertex2f glVertex3i glVertex3f

glColor3f glColor4i glClearColor glutInit glutMainLoop gluOrtho2D

Dibujando primitivas en OpenGL glBegin( constante )


Estructura:

glVertex2i . . . . glEnd( )

Constantes:

GL_POINTS GL_LINES GL_LINE_LOOP GL_LINE_STRIP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON

Dibujando primitivas en OpenGL glBegin( GL_POINTS )


Ejemplo 1: (un punto)

glVertex2i(250,200) glEnd( )

glBegin( GL_TRIANGLES )
Ejemplo 2: (un tringulo)

glVertex2i(50,50) glVertex2i(100,100) glVertex2i(50,100) glEnd( )

Comandos vlidos entre glBegin - glEnd

Orden de los vrtices

Polgonos

Validos

Invlidos

Color de Primitivas

Ejemplo:

Programa mnimo
#include <windows.h> #include <GL/glut.h> void display_cb (void) { glClear (GL_COLOR_BUFFER_BIT); glFlush(); } void inicializacion (void) { glClearColor (1.0, 1.0, 1.0, 0.0); } int main (int argc, char** argv) { glutInit (&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (600, 400); glutCreateWindow (Codigo Minimo"); glutDisplayFunc (display_cb); inicializacion(); glutMainLoop(); return 0; }

Primer programa con OpenGL


#include <windows.h> #include <GL/glut.h> void display_cb (void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (0.0, 1.0, 0.0); glBegin (GL_TRIANGLES); glVertex2i(100,100); glVertex2i(150,200); glVertex2i(200, 50); glEnd(); glFlush(); } void inicializacion (void) { glClearColor (1.0, 1.0, 1.0, 0.0); glMatrixMode (GL_PROJECTION); glLoadIdentity(); gluOrtho2D (0, 600, 0, 400); } int main (int argc, char** argv) { glutInit (&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (600,400); glutCreateWindow (Ejemplo OpenGL"); glutDisplayFunc (display_cb); inicializacion(); glutMainLoop(); return 0; }

También podría gustarte