PDF de programación - Apuntes de OpenGL

Imágen de pdf Apuntes de OpenGL

Apuntes de OpenGLgráfica de visualizaciones

Publicado el 21 de Junio del 2018
845 visualizaciones desde el 21 de Junio del 2018
172,2 KB
57 paginas
Creado hace 24a (16/03/2000)
GRÁFICOS



APUNTES DE

OPENGL



CURSO 1998-99



Rafael Molina Carmona
Juan Antonio Puchol García

ALGUNAS CUESTIONES PREVIAS


¿QUÉ ES OPENGL?


es

una

OpenGL

desarrollada
inicialmente por Silicon Graphics, aunque pronto pasó a convertirse en un estándar, en
especial
Sus
principales características son:

operativo Windows.

adoptó Microsoft

de modelado

gráficos

librería

sistema

cuando

para

Fue

3D.

su

lo

y

sistema procedural y no descriptivo, es decir, el programador no describe
la

los pasos necesarios para configurar

los objetos de

la escena y

en modo

inmediato,

es decir,

los

objetos

son dibujados

conforme van



• Es fácilmente portable y muy rápida.
• Es un

una escena sino
escena final.

• Actúa

creándose.
Incluye:



Iluminación y sombreado.

• Primitivas gráficas: puntos, líneas, polígonos.

• Texturas.
• Animaciones.
• Otros efectos especiales.

• OpenGL

trata

con

contextos de visualización

o de

rendering,

asociados

a un

contexto de dispositivo que, a su vez, se encuentra asociado a un ventana.

la

toda

Incorpora

igual que el de OpenGL.

Mesa es un clónico gratuito de OpenGL. Se


¿QUÉ ES MESA?


básicamente
la única excepción de algunas rutinas muy específicas, que se refieren a:

• NURBS recortadas.
• Antialiasing para polígonos.


indistintamente a Mesa o a OpenGL, ya que no existen diferencias sustanciales.

ESTRUCTURA BÁSICA DE OPENGL

• OpenGL es un API, no un

Nosotros utilizaremos Mesa

curso. En

este

en

lo

trata de una

librería cuyo API es
funcionalidad de OpenGL con

sucesivo nos

referiremos

• OpenGL

tanto,
(generalmente C o C++) en el que escribir el programa que realizará

lenguaje de programación. Necesitaremos, por

lo

lenguaje

un
llamadas a funciones de la librería, utilizando para ello la sintaxis de C.

es

de

del

sistema

ventanas

independiente

sistema
incorpora rutinas para el manejo de ventanas. Este manejo

operativo, es decir, no
debe realizarse a través del API del entorno de ventanas elegido.
Se necesita, por
limitado de rutinas que pongan el contacto al
sistema operativo y al entorno de ventanas con OpenGL. Este conjunto de rutinas
es diferente para cada
sino a una
librería auxiliar. De esta manera, el núcleo de OpenGL permanece
inalterado para
todos los sistemas operativos.

sistema operativo y no pertenece a OpenGL

lo tanto, un conjunto

utilizado

del

y





2

• OpenGL

incorpora

la
obstante,

no

Existe,
visualización y que
(OpenGL Utility Library).

funcionalidad básica para
un

conjunto de

aspectos

realizar
que

se encuentran en una

librería estándar adicional

la visualización
no

son

(rendering).
estrictamente de
llamada GLU

• En

• Existen algunas herramientas o

toolkits que

facilitan

la

con un entorno de ventanas. Un ejemplo es GLUT
completo conjunto de herramientas que
y MS-Windows o X Windows.

facilitan enormente el

labor de “pegar” OpenGL
(OpenGL Utility Toolkit), un
trabajo con OpenGL

resumen,

para

trabajar

con OpenGL

necesitamos

al menos

las

siguientes

componentes:
• Un

lenguaje de

programación

con

su

compilador,

que

pueda

realizar

llamadas a funciones en formato C: C, C++, VisualBasic, Java...

• Librería OpenGL: Contiene

a

las

tareas de

las

funciones

propias de OpenGL, dedicadas
el

incorporan

funciones

rendering. Las

fundamentalmente
prefijo gl-.

• Librería de utilidades GLU: Contiene algunas

funciones, con el prefijo glu-,

que realizan las siguientes tareas:

• Transformación de coordenadas.
• Poligonalización de objetos.
• Manipulación de imágenes para aplicarlas como texturas.
• Rendering de figuras canónicas: esferas, cilindros y discos.
• Curvas y superficies NURBS.


Informe de errores.

• Librería para

“pegar” OpenGL

y

el

sistema de ventanas. Esta

librería

depende del sistema elegido. Entre los más habituales encontramos:

la

librería para

la

familia de

sistemas MS-Windows. El

prefijo utilizado en sus funciones es wgl-.

la

librería para X Windows. Utiliza el prefijo glx- en sus

• WGL: Es

• GLX: Es
funciones.

• Alternativamente al uso de

las

amplio

abanico de

encontrar un
trabajo con el API del entorno de ventanas y
de
Windows como para X Windows. Sus funciones llevan el prefijo glut-.

ellas destaca GLUT,

ventanas. Entre

versiones

facilitan

en

librerías anteriores
que

librerías

(WGL, GLX...), es posible
complicado
encapsulan
la creación y gestión
tanto para MS

el



Nosotros vamos a

trabajar con GLUT para X Windows, haciendo uso, además,

de las librerías OpenGL y GLU, utilizando C como lenguaje de programación.



3

1. GLUT

Las

los

“pegarlos”

complejas

se

hace

imprescindible

la

los

fundamentos de

sistemas de

ventanas,

ventanas, utilizando

las

solamente

los

conceptos

los principales
interfaz de

GLUT es una

librería pequeña y

fundamentales para poder

trabajar

con

las funciones de GLUT siempre es

la misma,

las facetas de
de

aplicaciones
sistemas de

la programación con APIs de ventanas, por

lo que para

GLUT

es un API

con
independientemente del

Como paso previo al estudio de OpenGL, vamos a ver

escribir programas
formato ANSI C, pensado para
sistema de ventanas utilizado. Existen versiones de
y X
lo que facilita al

incluyendo MS Windows

fácil de aprender y utilizar. No cubre, no
la
programación
con


INTRODUCCIÓN


la
programación con GLUT. Puesto que el estudio de GLUT no es el objetivo de este
curso, veremos
esta
librería de herramientas.


OpenGL
GLUT para
Windows. La
máximo la portabilidad de programas entre diferentes entornos.


obstante, todas
programación
directa de
librerías para
OpenGL (WGL, GLX, ...). Para el propósito de este curso, el uso de GLUT es suficiente.


tiene un conjunto de variables de estado que durante
las características que debe
unos valores
aplicaciones,
efecto
dependiendo de
comporta, así mismo, como una máquina de estados, tal y como veremos más adelante.


punteros. Dependiendo de la funcionalidad podemos distinguir funciones para:


• Control de ventanas
• Control de menús
• Procesamiento de eventos
• Registro de funciones callback
• Obtención del estado
• Control de overlays
• Control del mapa de colores
• Visualización de fuentes de texto
• Dibujo de formas geométricas


El API de GLUT es una máquina de estados. Esto quiere decir que el sistema
fijan
tienen
las
el
diferentes
librería OpenGL se

la aplicación en cada momento. Estas variables
sido escogidos para adaptarse a

funciones de GLUT son simples, con pocos parámetros y evitan el uso de

función
tener
las variables de estado. La propia

de GLUT

puede

deseado. Una misma
los valores de

tener
iniciales que han

la mayoría de
conseguir

la ejecución del programa

aunque pueden

ser modificados por

el programador para

Inicialización

efectos

Los últimos cuatro grupos de

funciones no

los veremos, por quedar
referencia de estos

completa

curso. Puede

consultarse una

alcance de este
[Kilg96].



fuera del
temas en

4

A continuación

se comentan algunas de

las particularidades y convenciones de

GLUT:

• En una ventana, el origen de coordenadas

(0,0) se encuentra en

izquierda. Esto
está
inferior izquierda, pero no supone ningún problema como veremos más adelante.

con OpenGL,

cuyo origen

inconsistente

es

la esquina superior
esquina

en

la

• Los

identificadores

enteros

en GLUT

(utilizados

para

ventanas, menús,

etc.)

empiezan en 1 y no en 0.

• Las definiciones de

las funciones de GLUT se encuentran en el archivo de cabeceras

glut.h.


INICIALIZACIÓN


el estado de GLUT. Algunas de estas rutinas son:

• void glutInit (int *argcp, char **argv)

Las rutinas que empiezan con el prefijo glutInit- se utilizan para

inicializar

argcp: puntero al parámetro argc de la función main del programa.
argv: parámetro argv de la función main.


glutInit

inicializa

la

librería GLUT, pudiéndosele pasar algún parámetro por

Esta rutina debe ser

línea de comandos a través de argcp y argv.


otra
función de
estamos fijando el estado por defecto de la aplicación al inicializarse.

función que no sea de

inicialización

llamada una única vez al principio del programa. Ninguna
llamarse antes. Si utilizamos alguna
función,

el prefijo glutInit-) delante de

inicialización puede

(con

ésta


• void glutInitWindowSize (int ancho, int alto)

ancho: anchura de la ventana en pixels
alto: altura de la ventana en pixels



Esta rutina sirve para indicar el tamaño inicial de las ventanas que se creen.


• void glutInitWindowPosition (int x, int y)

x: posición en x de la ventana en pixels
y: posición en y de la ventana en pixels



Con esta función fijamos la posición inicial de las ventanas que se creen.


• void glutInitDisplayMode (unsigned int modo)

modo: modo de display. Es una composición mediante conectores “|” de algunos de
los valores siguientes:

GLUT_RGBA:

GLUT_RGB:
GLUT_INDEX:

GLUT_SINGLE:

GLUT_DOUBLE:

Selecciona una ventana e
  • Links de descarga
http://lwp-l.com/pdf12037

Comentarios de: Apuntes de OpenGL (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad