PDF de programación - Despliegue Básico en OpenGL

Imágen de pdf Despliegue Básico en OpenGL

Despliegue Básico en OpenGLgráfica de visualizaciones

Publicado el 19 de Julio del 2017
817 visualizaciones desde el 19 de Julio del 2017
330,3 KB
11 paginas
Creado hace 10a (07/01/2014)
Universidad Central de Venezuela

Facultad de Ciencias

Escuela de Computación



Lecturas en Ciencias de la Computación

ISSN 1316-6239



Despliegue Básico en

OpenGL Moderno



Esmitt Ramírez



ND 2014-01



Centro de Computación Gráfica de la UCV

CCG-UCV

Caracas, enero 2014

Lecturas en Ciencias de la Computación

ND 2014-01

ISSN 1316-6239

Despliegue Básico en OpenGL Moderno

Esmitt Ramírez J.

Enero 2014

Resumen

OpenGL (Open Graphics Library) es una librería gráfica ampliamente usada a nivel mundial para el despliegue de gráficos 2D/3D. Esta
librería presenta una API multiplataforma y es soportada por diversos lenguajes de programación. Desde su aparición en 1992, es empleada
en la creación de programas CAD, visualización científica, despliegue de simulaciones, juegos de video, entre otros.
La documentación asociada a OpenGL es muy variada y extendida. A lo largo de los años se han creado diversas funcionalidades que tratan
de explotar al máximo las capacidades del hardware gráfico. Recientemente, hubó cambios considerables en la estructura del funcionamiento
de los programas de OpenGL. Estos cambios se deben principalmente a la evolución de las GPUs (Graphics Processing Unit) modernas,
haciendo ciertas funciones obsoletas y otras necesarias. De esta forma, las funciones actuales de OpenGL aprovechan las capacidades de
almacenamiento en memoria de video y de los núcleos de procesamiento de la GPU. En Computación Gráfica, a esta reciente forma de operar
con OpenGL se le denomina OpenGL moderno.
En este documento, se realiza una breve introducción a los requerimientos necesarios para desarrollar programas basados en OpenGL moderno
(con el uso de shaders). Al mismo tiempo, se presenta la evolución del pipeline gráfico en OpenGL y cada una de sus etapas.

1

Tabla de Contenido
1

Introducción

2 Evolución del Pipeline Gráfico

3 Pipeline Gráfico

.
.
.
3.1 Vertex Shading .
.
.
3.2 Tessellation Shading .
.
3.3 Geometry Shading .
.
.
.
3.4 Ensamblaje de Primitivas
.
.
.
3.5 Clipping .
.
3.6 Rasterización .
.
.
.
3.7 Fragment Shading .
.
.
3.8 Operaciones por Fragmento .

.
.
.
.
.
.
.

.
.
.

.
.
.

.
.
.

.

.

.

.

.
.

4 Configuración de OpenGL

5 Ejemplo de despliegue

6 Conclusiones

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

3

3

4
4
4
5
5
5
5
5
5

6

7

10

2

1 Introducci ón

OpenGL (Open Graphics Library) es una API multiplataforma para el despliegue de primitivas gráficas en 2D y 3D. Con OpenGL es posi-
ble crear aplicaciones interactivas en computación gráfica para el despliegue de imágenes a color en alta calidad que representa a objetos
geométricos, primitivas, escenas 3D, datos multidimensionales, imágenes, entre otros. La API de OpenGL es independiente del sistema
operativo y del sistema de ventanas. Así, parte del código se ejecuta independiente de la plataforma de ejecución y otra es controlada por el
sistema de ventanas de la plataforma donde se ejecuta (e.g. X Windows, API Win32, etc.).
La versión 1.0 de OpenGL fue liberada en enero de 1992 y desde entonces es ampliamente utilizada en la construcción de aplicaciones
CAD, realidad virtual, visualización científica, simulaciones, y videojuegos. A lo largo de los años, la versión original ha sufrido numerosos
cambios a la fecha. Este documento se enfoca en las versiones modernas de OpenGL (desde la versión 3.1) la cual está basada en shaders
(conocidda como shader-based).
La documentación asociada a las primeras versiones de OpenGL u otros pipelines gráficos basados en rasterización que incluyen proce-
samiento sobre funciones fijas (fixed-based), no son cubiertas en este documento. En el desarrollo de aplicaciones bajo OpenGL moderno la
funcionalidad fija está en estado de deprecated1. Así, en las siguientes secciones solo se mencionará el uso de los shaders para el desarrollo
de una aplicación simple así como las estructuras de datos asociadas a ella.

2 Evoluci ón del Pipeline Gráfico

La versión inicial de OpenGL (versión 1.0) incluía un pipeline de funcionalidad fija. Esto significa que todas las funciones soportadas
por OpenGL están bien definidas y una aplicación solo puede modificar los parámetros de entrada a dichas funciones como los valores
de posición, color, entre otros. En un pipeline de funcionalidad fija, el orden de ejecución de las etapas operacionales es fijo. Con ello,
no es posible reordenar las etapas para que se ejecuten en un orden distinto. Esta forma de operar fue la base de diversas versiones de
OpenGL durante muchos años, y aún está disponible para ser empleado así. Sin embargo, el hardware gráfico moderno introdujo nuevas
funcionalidades para crear un cambio de paradigma y aprovechar al máximo las capacidades de las GPUs actuales (Graphics Processing
Units), pero manteniendo compatibilidad hacia atrás con las versiones previas. En la Figura 1 se puede observar la evolución años/versiones
de OpenGL hasta la fecha.

Figura 1: Evolución de las versiones de OpenGL a través del tiempo. Actualizado a enero 2014.

En Septiembre de 2004, fue liberada la versión 2.0 de OpenGL con compatibilidad a versiones anteriores. En dicha versión fue añadido
de forma oficial la funcionalidad de programmable shaders en el pipeline gráfico. Un shader es un pequeño programa responsable de la
implementación de características inherentes a la aplicación que se encuentra dentro del pipeline gráfico y es ejecutado directamente por la
GPU. En esta versión de OpenGL fueron añadidas dos etapas programables:

• vertex shading, que permite a la aplicación manipular toda la geometría 3D provista por un programa en OpenGL .
• fragment shading, que provee la capacidad a la aplicación de sombrear píxeles, es decir, determinar el color final de un píxel.

Hasta la versión 3.0 de OpenGL, fueron añadidas diversas funcionalidades ofreciendo siempre la compatibilidad hacia atrás. Esta versión
introduce el mecanismo de remoción de características de OpenGL, denominado como deprecation model. De esta forma, el comité encargado
de las normas de OpenGL, el OpenGL Architecture Board (ARB) perteneciente a Khronos Group, advierte cuáles funcionalidades serán
removidas de OpenGL para futuras versiones. Esta remoción se debe principalmente a la eficiencia de las funciones en OpenGL dado que las
extensiones eran creadas sobre otras funciones que no explotaban las capacidades de las GPUs modernas. Así, la construcción de un pipeline
más simple y optimizado sería posible.
Al mismo tiempo, se introduce en OpenGL una estructura de datos llamada context la cual se emplea para almacenar shaders y otros datos
internos de OpenGL. Básicamente se existen dos tipos de contexto: full y forward-compatible. Un contexto del tipo full incluye todas las
características de la actual versión de OpenGL, incluyendo las funcionalidades no-aprobadas (deprecated). Si se define el contexto como
forward-compatible, se habilita solo las características que estarán disponibles en la próxima versión de OpenGL. Esto se hace para ayudar a
los desarrolladores a asegurar que sus aplicaciones se ejecutarán de forma correcta en las futuras versiones de OpenGL.
La versión 3.1 de OpenGL introduce las funcionalidades no-aprobadas y rompe con la compatibilidad hacia atrás. Esto hace que también se
haga obsoleto el uso del pipeline gráfico del tipo fixed-based. En esta versión, todos los datos de la aplicación son GPU-resident en estructuras
llamadas buffer objects ayudando a reducir ciertas limitaciones de varias arquitecturas en relación a la ejecución de programas en la GPU.

1En software, el estado deprecated se refiere a obsoleto o desfasada al referirse a una API, librería, función ó metodología empleada.

3

OpenGL 1.01.01.11.21.31.41.5OpenGL 2.02.02.1OpenGL 3.03.03.13.23.3OpenGL 4.04.04.14.24.3(1992-2003)(2004-2007)(2008-2010)(2010-201*)4.4 La posterior versión, OpenGL 3.2, añade una nueva etapa de shader en el pipeline gráfico llamada geometry shading que permite la modifi-
cación y generación de geometría en OpenGL. Esta nueva etapa se ubica después de la etapa de vertex shading. Además, en esta versión se
introduce el concepto de context profiles (core y compatible) para lograr una selección más amplia de los contextos en OpenGL.
En marzo de 2010, la versión 4.0 añade dos etapas más al pipeline programable: tessellation-control y tessellation-evaluation. Ambas trabajan
de forma conjunta y permiten el teselado dinámico en la GPU. La versión 4.3 agrega una forma de aumentar el paralelismo en la GPU dentro
de contextos gráficos con shaders llamados compute shaders. La última versión de OpenGL, la versión 4.4 (Julio 2013) incluye muchas
funcionalidades añadidas sobre el pipeline gráfico de la versión 4.0 pero no nuevas etapas de shading.

3 Pipeline Gráfico

El pipeline gráfico o rendering pipeline es una secuencia de etapas de procesamiento que dada una entrada basada en vértices y sus atributos,
generan una imagen final para su despliegue. En la figura 2 se muestra un pipeline gráfico simplificado asociado a la ver
  • Links de descarga
http://lwp-l.com/pdf5587

Comentarios de: Despliegue Básico en 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