Subido por Josué Rivera

Introducción a los Gráficos por Computadora - Cap 1

Anuncio
Capítulo 1
Introducción
El término "gráficos por computadora" se refiere a cualquier cosa involucrada en la creación
o manipulación de imágenes en computadora , incluyendo animado imágenes . Se es a muy
amplia campo , y uno en que los cambios y los avances parecen venir a un ritmo vertiginoso.
Se puede ser difícil para a principiante para saber por dónde empezar. Sin embargo, , no es a
núcleo de ideas fundamentales que son parte de el base de la mayoría de las aplicaciones de
gráficos por ordenador. Este libro intenta cubrir esos fundamentos ideacionales, o al menos
tantas de ellas como caben en un nivel universitario de un semestre curso.
Si bien no es posible cubrir todo el campo en un primer curso incluso gran parte de este
debe ser un buen lugar para empezar.
Este breve capítulo ofrece una visión general e introducción al material que se tratará
en el resto del libro, sin entrar en muchos detalles.
1.1 Pintura y dibujo
El foco principal de este libro
son los gráficos tridimensionales(3D), donde la mayor parte
del trabajo entra en la producción de un modelo 3D de una escena. Pero en última instancia
, en casi todos casos, el fin resultado de un proyecto de gráficos por ordenador es una imagen
bidimensional. Y, por supuesto, la producción directa y la manipulación de imágenes 2D es
un tema importante por derecho propio. Además , a lote de ideas se retrasan de dos
dimensiones a tres. Por lo tanto, tiene sentido comenzar con gráficos en 2D.
Una imagen que se presenta en la pantalla del ordenador se compone de píxeles. El
pantalla consiste en de una cuadrícula rectangular de píxeles, dispuesta en filas y columnas.
El píxeles son pequeño suficiente que no son fáciles de ver individualmente. De hecho, para
muchas pantallas de muy alta resolución, se vuelven esencialmente invisibles. En un momento
dado, cada píxel puede mostrar solo un color. Más pantallas estos días utilizan el color de 24
bits, donde un color se puede especificar por tres números de 8 bits, dando la niveles de
rojo, verde y azul en el color. Cualquiera que color que puede ser mostrado en el pantalla es
hecho hasta de alguna combinación de estos tres "colores primarios". Otros formatos son
posible , tales como escala de grises, donde cada píxel es algún tono de gris y el color del
píxel se da por un número que especifica el nivel de gris en una escala de negro a blanco.
Típicamente , 256 sombras de grises son utilizado .
Las primeras pantallas de computadora utilizan color indexado, donde sólo un pequeño
conjunto de colores, por lo general 16 o 256, podría visualizarse . Para un indexado pantalla
a color, no es a numerado lista de posible colores , y el color de un píxel se especifica mediante
un entero que da la posición del color en el lista.
En cualquier caso, los valores de color de todos los píxeles de la pantalla se almacenan en
un bloque de memoria conocida como búfer de fotogramas . Cambios el imagen en el pantalla
requiere cambiando color valores que se almacenan en el búfer de tramas. El pantalla es
redibujado muchos veces por segundo , por lo que casi inmediatamente después de que los
valores de color se cambian en el búfer de marco, los colores de los píxeles de la pantalla
se cambiarán para que coincidan, y la imagen mostrada cambiará .
1
CAPÍTULO 1. INTRODUCCION 2
Una pantalla de ordenador utilizada de esta manera es el modelo básico de gráficos ráster.
El término "raster" técnicamente se refiere al mecanismo utilizado en monitores de
computadora de tubo de vacío más antiguos:
Un haz de electrones se movería a lo largo de las filas de píxeles, haciéndolos brillar. El viga
fue movidos a través de la pantalla por potentes imanes que desviarían la trayectoria de
los electrones. El más fuerte el haz, más brillante es el resplandor del píxel, por lo que el
brillo de los píxeles podría ser controlado mediante la modulación de la intensidad del haz
de electrones. El color valores almacenado en el tampón de trama se utilizaron
para
determinar la intensidad del haz de electrones. (Para una pantalla a color, cada píxel tenía
un punto rojo, un punto verde, y un punto azul, que fueron iluminados por separado por el
viga.)
Un monitor de ordenador de pantalla plana moderno no es un ráster en el mismo sentido.
No hay es no haz de electrones en movimiento. El mecanismo que controles el colores de el
píxeles es diferente para diferentes tipos de pantalla. Pero el pantalla es todavía hecho hasta
de píxeles , y el color valores para todos
los píxeles todavía se almacenan en un búfer de fotogramas. El idea de un imagen que consiste
en de a rejilla de píxeles , con valores de color numéricos para cada píxel, define gráficos
ráster.
Aunque las imágenes de la pantalla del ordenador se representan mediante píxeles,
especificando los colores de píxeles no siempre es la mejor manera de crear una imagen.
Otro manera es a especificar el básico objetos geométricos que
contiene, formas como
líneas, círculos, triángulos y rectángulos . Este es la idea que define los gráficos vectoriales :
Representar una imagen como una lista de la formas que contiene. Para hacer cosas más
interesante , el formas puede tienen atributos , tales como el grosor de una línea o el color
que rellena un rectángulo. De curso , no cada imagen puede ser compuesto de formas
geométricas simples. Este enfoque sin duda no lo haría trabajo para a imagen de una hermosa
puesta de sol (o para la mayoría de cualquier otra imagen fotográfica). Sin embargo, , que
obras bien para muchos tipos de imágenes, como planos arquitectónicos e ilustraciones
científicas.
De hecho, al principio de la historia de la computación, los gráficos vectoriales incluso se
utilizaron directamente en computadora pantallas. Cuando el primero gráfico computadora
pantallas fueron desarrollado , raster pantallas fueron también lento y caro para ser práctico.
Afortunadamente , que fue posible a usar vacío tubo tecnología de otra manera: El haz de
electrones se podría hacer para dibujar directamente una línea en la pantalla , simplemente
barriendo la viga a lo largo de esa línea. Una pantalla de gráficos vectoriales almacenaría
una lista de visualización de líneas que deben aparecer en la pantalla. Desde a punto en el
pantalla sería resplandor sólo muy brevemente después de ser iluminado por el haz de
electrones, la pantalla gráfica pasaría a través de la mostrar lista una y otra vez, redibujando
continuamente todas las líneas de la lista. Para cambio el imagen , sólo
sería necesario
cambiar el contenido de la lista de visualización. De curso , si la pantalla lista se convirtió en
demasiado larga, la imagen comenzaría a parpadear porque una línea tendría la
oportunidad de visiblemente se desvanecen antes de su siguiente turno para ser redibujado.
Pero aquí está el punto: Para una imagen que se puede especificar como un número
razonablemente pequeño de
Formas geométricas, la cantidad de información necesaria para representar la imagen es
mucho menor utilizando una representación vectorial que utilizando una representación
ráster.
Considere un imagen hecho hasta de mil segmentos de línea. Para un vector representación
de el imagen , que sólo necesidad a tienda las coordenadas de dos mil puntos, los puntos
finales de las líneas. Este sería tomar hasta sólo a pocos kilobytes de memoria. Para tienda el
imagen en un marco buffer para a raster pantalla sería requieren mucho más memoria. Del
mismo modo , una visualización vectorial podría dibujar el líneas en el pantalla más rápidamente
que una visualización ráster podría copiar la misma imagen del búfer de fotogramas a la
pantalla . (Como tan pronto como las pantallas ráster se volvieron rápidas y baratas, sin
embargo, rápidamente desplazaron vector debido a su capacidad para mostrar todo tipo de
imágenes razonablemente bien.)
CAPÍTULO 1. INTRODUCCION 3
La división entre gráficos ráster y gráficos vectoriales persiste en varias áreas del ordenador
gráficos. Para ejemplo , que puede ser visto en un división entre dos categorías de programas
que se puede utilizar para crear imágenes: programas de pintura y programas de dibujo. En
una pintura programa, la imagen se representa como una cuadrícula de píxeles, y el usuario
crea una imagen asignación de colores a píxeles. Este podría se haga por utilizando a " dibujo
herramienta " que actos como a pintor cepillo o incluso mediante herramientas que dibujan
formas geométricas como líneas o rectángulos. Pero el punto en un programa de pintura es
colorear los píxeles individuales, y son sólo los colores de píxeles los que se guardan.
Para hacer esto más
claro, supongamos que se utiliza un programa de pintura para dibujar
una casa, a continuación, dibujar a árbol en frente de la casa. Si que entonces borrar el árbol
, usted va a sólo revelar a en blanco antecedentes , no una casa. De hecho, la imagen nunca
contenía realmente una "casa" en absoluto sólo de color individual píxeles que el espectador
podría percibir como la creación de una imagen de una casa.
En un programa de dibujo, el usuario crea una imagen añadiendo formas geométricas y la
imagen se representa como una lista de esas formas. Si que lugar un lugar casa forma (o
colección de formas que hacen hasta una casa)en la imagen , y luego se coloca una forma
de árbol en la parte superior de la casa, el casa es todavía allí, ya que se almacena en la
lista de formas que contiene la imagen. Si que eliminar el árbol , la casa seguirá estando en
la
imagen, tal como era antes de añadir el árbol. Además , que debe ser capaz de
seleccionar una de las formas en la imagen y moverla o cambiar su tamaño, por lo que
el dibujo los programas ofrecen un amplio conjunto de operaciones de edición que no son
posibles en los programas de pintura. (El reverso, sin embargo, también es cierto.)
Un programa práctico para la creación y edición de imágenes podría combinar elementos
de dibujo, aunque uno u otro suele ser dominante. Para ejemplo , a dibujo programa podría
permitir que el usuario incluya una imagen de tipo ráster, tratándola como una forma. Un
programa de pintura puede permitir al usuario crear "capas", que son imágenes separadas
que se pueden superior de otro para crear la imagen final. El capas puede entonces ser
manipulado mucho como el formas en un programa de dibujo (para que pueda mantener
su casa y su árbol en capas separadas , incluso si en la imagen de la casa está en la parte
posterior del árbol).
Dos programas gráficos conocidos son Adobe Photoshop y Adobe Illustrator. Photoshop
está en la categoría de programas de pintura, mientras que Illustrator es más de un
programa de dibujo. En
el mundo del software libre, el programa de procesamiento de imágenes GNU, Gimp, es una
buena alternativa a
Photoshop, while Inkscape es un programa de dibujo libre de forma razonable. Breves
introducciones a Gimp y Inkscape se pueden encontrar en el Apéndice C.
La división entre gráficos ráster y vectoriales también aparece en el campo de archivo de
gráficos formatos. No hay son muchos maneras a representan un imagen como datos
almacenado en un archivo. Si el original imagen debe ser recuperada de los bits almacenados
en el archivo, la representación debe seguir algunos Especificación exacta, conocida. Tales
a especificación es llamado a gráficos archivo formato . Algunos popular los formatos de archivo
de gráficos incluyen GIF, PNG, JPEG y SVG. Más imágenes utilizado en el Las webs son GIF, PNG
o JPEG. Los navegadores web modernos también tienen soporte para imágenes SVG.
GIF, PNG y JPEG son básicamente formatos de gráficos ráster; un imagen es especificados por
almacenamiento un valor de color para cada píxel. GIF es un formato de archivo más antiguo,
que ha sido reemplazado en gran medida por PNG, pero todavía se pueden encontrar
imágenes GIF en la web. (El formato GIF admite animación
imágenes, por lo que los GIF se utilizan a menudo para animaciones simples en páginas Web
.) GIF utiliza un índice modelo de color con un máximo de 256 colores. PNG puede utilizar
color indexado o completo de 24 bits, mientras que JPEG está diseñado para imágenes a todo
color.
La cantidad de datos necesarios para representar una imagen ráster puede ser bastante
grande. Sin embargo, los datos suelen contener mucha redundancia ,y los datos pueden
ser "comprimidos" para reducir su tamaño. GIF y PNG utilizan compresión de datos sin
pérdida, lo que significa que la imagen original
CAPÍTULO 1. INTRODUCCION 4
se puede recuperar perfectamente de los datos comprimidos. JPEG utiliza una compresión
de datos con pérdida algoritmo, lo que significa que la imagen que se recupera de un
archivo JPEG no es exactamente al igual que la imagen original; algunos información tiene
sido perdido . Este podría no sonido como a bueno idea, pero de hecho la diferencia a menudo
no es muy notable, y el uso de la compresión con pérdida por lo general permite una mayor
reducción en el tamaño de los datos comprimidos. JPEG generalmente funciona bien para
imágenes fotográficas, pero no tan bien para las imágenes que tienen bordes nítidos entre
diferentes colores .
Es especialmente malo para dibujos de líneas e imágenes que contienen texto; PNG es el
formato preferido para tales imágenes. SVG, por otro lado, es fundamentalmente un formato
de gráficos vectoriales.
las edades pueden incluir imágenes ráster). SVG es en realidad un lenguaje basado en XML
para describir dos imágenes de gráficos vectoriales dimensionales. "SVG" significa "Gráficos
vectoriales escalables "y el término "escalable" indica una de las ventajas de los gráficos
vectoriales : No hay pérdida de calidad cuando se aumenta el tamaño de la imagen.
Una línea entre dos puntos
se puede representar a cualquier escala, y sigue siendo la
misma perfecta línea geométrica. Si que tratar de a en gran medida aumentar el tamaño de a
raster imagen , en el otros mano , que voluntad encontrar que no tienen suficiente color valores
para todos los píxeles de la nueva imagen; cada uno pixel de el original imagen voluntad ser
ampliado a cubierta a rectángulo de píxeles en la imagen escalada, y obtendrá bloques de
varios píxeles de color uniforme. El naturaleza escalable de las imágenes SVG las convierten
en una buena opción para los navegadores web y para
elementos en el escritorio de su computadora. Y de hecho, algunos entornos de escritorio
ahora están usando Imágenes SVG para sus iconos de escritorio.
Una imagen digital, independientemente de su formato, se especifica mediante un sistema
de coordenadas. A el sistema de coordenadas establece una correspondencia entre números
y puntos geométricos. En dos dimensiones, a cada punto se le asigna un par de números,
que se denominan las coordenadas de el punto. El dos coordenadas de a punto son a menudo
llamado su x - coordinar y y y - coordinar , aunque los nombres "x" e "y" son arbitrarios.
Una imagen ráster es una cuadrícula bidimensional de píxeles dispuesta en filas y columnas.
Como tal, tiene un sistema de coordenadas natural en el que cada píxel corresponde a un
par de enteros con el número de la fila y el número de la columna que contiene el píxel.
(Incluso en este caso simple, hay cierto desacuerdo en cuanto a si las filas deben ser
numeradas de superiora-inferior o de abajo-a-arriba.)
Para una imagen vectorial, es natural utilizar coordenadas de número real. El coordinar
sistema para una imagen es arbitraria hasta cierto punto; que es , el mismo imagen puede
ser especificados utilizando diferente sistemas de coordenadas. No quiero decir mucho
acerca de los sistemas de coordenadas aquí, pero van a ser un foco principal de una gran
parte del libro,y son aún más importantes en tres -dimensiones
gráficos que en dos dimensiones.
1.2 Elementos de gráficos 3D
Cuando nos dirigimos a gráficos 3D,
encontramos que los enfoques más comunes
tienen más en común con gráficos vectoriales que con gráficos ráster. Que es , el contenido
de un imagen es especificado como una lista de objetos geométricos. El técnica es referidos a
como geométrico modelado .
El punto de partida es construir un "mundo 3D artificial" como una colección de
formas, dispuestas en un espacio tridimensional. El objetos puede tienen atributos que ,
combinados con propiedades globales del mundo, determinar la apariencia de los objetos.
A menudo , el rango de formas básicas es muy limitada, tal vez incluyendo sólo puntos,
segmentos de línea, y triángulos. A forma más compleja, como un polígono o esfera, se
puede construir o aproximar como una colección
CAPÍTULO 1. INTRODUCCION 5
de formas más básicas, si no se considera en sí misma básica. Para hacer a dos -dimensional
imagen de la escena, la escena se proyecta de tres dimensiones a dos dimensiones.
Proyección
es el equivalente a tomar una fotografía de la escena. Vamos a mirar cómo que todos obras
en un poco más detalles.
En primer lugar, la geometría. .. . Nosotros iniciar con un vacío 3D espacio o " mundo ." De
curso , este espacio existe sólo conceptualmente, pero es útil pensar en él como real y
ser capaz de visualizarlo en su mente. El espacio necesidades a coordinar sistema que
asociados cada uno punto en el espacio con tres números, generalmente denominados las
coordenadas x, y, y z del punto . Esta coordenada
sistema se conoce como "coordenadas mundiales."
Queremos construir una escena dentro del mundo, compuesta de objetos geométricos.
Para ejemplo , podemos especificar un segmento de línea en la escena
dando las
coordenadas de sus dos puntos finales, y podemos especificar un triángulo dando las
coordenadas de sus tres vértices. El más pequeño bloques de construcción con los que
tenemos que trabajar, como segmentos de línea y triángulos, se denominan
primitivas geométricas. Diferente gráficos sistemas hacer diferente conjuntos de primitivo
disponible , pero en muchos casos sólo formas muy básicas como líneas y triángulos se
consideran primitivas .
Una escena compleja puede contener un gran número de primitivos, y sería muy difícil
crear la escena dando coordenadas explícitas para cada primitiva individual.
La solución, como cualquier programador debe adivinar inmediatamente, es dividir los
primitivos en componentes reutilizables. Para ejemplo , para a escena que contiene varios
automóviles , que podría crear a geométrico modelo de a rueda . Un automóvil puede ser
modelado como cuatro ruedas juntos con modelos de otros componentes . Y luego podríamos
usar varias copias del modelo de automóvil en la escena.
Tenga en cuenta que una vez que se ha diseñado un modelo geométrico, se puede utilizar
como un componente en modelos más complejos. Este es referidos a como jerárquico
modelado . Supongamos que tienen construido a modelo de a rueda hacia fuera de geométrico
primitivos . Cuando que rueda es se movió en posición en el modelo de un automóvil , el
coordenadas de todos de su primitivos voluntad tienen a ser ajustado . Así que lo que
exactamente tienen que ganado por edificio el rueda. El punto es que todos de el coordenadas
en el rueda son ajustado en el mismo manera . Que es , a lugar el rueda en el automóvil , que
sólo tienen a especificar un solo ajuste que es aplicado a el rueda como entero . El tipo de "
ajuste " que es utilizado es llamado a geométrico transformar (o transformación geométrica).
Una transformación geométrica se utiliza para ajustar el tamaño, la orientación y
posición de un objeto geométrico. Cuando haciendo a modelo de un automóvil , que construir
uno rueda .
A continuación, aplicamos cuatro transformaciones diferentes al modelo de rueda para
agregar cuatro copias de la rueda al automóvil. Del mismo modo , que puede añadir varios
automóviles a a escena por aplicando diferente transforma en el mismo modelo de automóvil.
Los tres tipos más básicos de transformación geométrica se denominan escala, rotación y
translación. Una transformación de escala se utiliza para establecer el tamaño de un objeto,
es decir, para hacerlo más grande o más pequeño por algún factor especificado. Una
transformación de rotación se utiliza para establecer la orientación de un objeto,
girándolo por algún ángulo sobre algún eje específico. Una transformación de traducción
se utiliza para establecer la posición de un objeto, descolocándolo por una cantidad
determinada de su posición original. En este
libro, vamos a cumplir con estas
transformaciones primero en dos dimensiones, donde están más fácil de
entender. Pero que es en 3D gráficos que convertirse en verdaderamente esencial .
•
Siguiente, apariencia. . . . Geométrico formas por ellos mismos son no muy interesante . Tú
tienen que ser capaces de establecer su apariencia. Este es hecho por asignación de atributos
a el geométrico
objetos. Un obvio atributo es color, pero conseguir a realista apariencia vueltas hacia fuera a ser
un lote
más complicado que simplemente especificar un color para cada primitivo. En gráficos3D,
en lugar de
color, por lo general hablamos de material. El término material aquí se refiere a el
propiedades que
CAPÍTULO 1. INTRODUCCION 6
determinar la apariencia visual intrínseca de una superficie. Esencialmente , este significa
cómo el superficie
interactúa con la luz que golpea la superficie. Las propiedades del material también pueden
incluir un color básico
como otras propiedades como la brillo, la rugosidad y la transparencia.
Uno de los tipos más útiles de propiedad de material es una textura. En términos generales,
una textura es una forma de variar las propiedades del material de punto a punto en una
superficie. El la mayoría
uso común de la textura es permitir diferentes colores para diferentes puntos. Este es
hecho por utilizando una imagen 2D como una textura, que se puede aplicar a una superficie
para que la imagen se vea como que es
"pintado" sobre la superficie. Sin embargo, , textura puede también referirse a cambiando
valores para cosas como
transparencia o "bumpiness". Texturas permitir nosotros a añadir detalle a a escena sin
utilizando a enorme
número de primitivas geométricas; en su lugar , que puede utilizar un más pequeño número
de texturizado primitivos .
Un material es una propiedad intrínseca de un objeto, pero la apariencia real del objeto
también depende del entorno en el que se vea el objeto. En el mundo real, no
ver cualquier cosa a menos que haya algo de luz en el medio ambiente. El mismo es cierto en
3D gráficos :
usted tiene que añadir iluminación simulada a una escena. No hay puede ser varios fuentes
de luz en un escena. Cada uno luz fuente puede tienen su propio color, intensidad , y dirección
o posición. La luz de esas fuentes interactuará con las propiedades materiales de los
objetos de la escena .
El soporte para la iluminación en un sistema gráfico puede variar de bastante simple a muy
complejo y
computacionalmente intensivo.
• ?
Por último, la imagen. . .. En general, el lo último objetivo de 3D gráficos es a producir 2D
imágenes del mundo 3D. El transformación de 3D a 2D implica ver y proyección .
El mundo se ve diferente cuando se ve desde diferentes puntos de vista. Para establecer
un punto de ver , tenemos que especificar la posición del espectador y la dirección que
el espectador está mirando . Se también es necesario especificar una dirección "arriba",
una dirección que apuntará hacia arriba en el imagen final. Este puede ser pensamiento de
como colocación una "cámara virtual" en el escena . Una vez que el vista está establecida, el
mundo visto desde ese punto de vista se puede proyectar en 2D. Proyección es análogo
a tomar una foto con la cámara.
El último paso en los gráficos 3D es asignar colores a píxeles individuales en la imagen 2D.
Este proceso se denomina rasterización, y todo el proceso de producción de una imagen
se conoce como representando la escena. En muchos casos, el objetivo final no es crear
una sola imagen, sino crear una animación , que consiste en una secuencia de imágenes que
muestran el mundo en diferentes momentos. En una animación, hay son pequeños cambios
de una imagen en la secuencia a la siguiente. Casi cualquier aspecto de a escena
puede cambiar durante una animación,
incluyendo coordenadas de primitivas,
transformaciones, material, propiedades, y la vista. Para ejemplo , un objeto puede ser hecho
a crecer más de el curso de una animación aumentando gradualmente el factor de escala en
una transformación de escalado que se aplica al objeto. Y cambiar la vista durante una
animación puede dar el efecto de moverse o volar a través de la escena. De curso , que
puede ser difícil a computación el necesario cambios . No hay muchas técnicas para ayudar
con el cálculo. Uno de el la mayoría importante es a usar un " física
motor", que calcula el movimiento y la interacción de los objetos en función de las leyes de
la física .
( Sin embargo, no aprenderá acerca de los motores de física en este libro.)
1.3 Hardware y Software
Se utilizará OpenGL como base principal para la programación de gráficos 3D. El original
versión de OpenGL fue lanzada en 1992 por una compañía llamada Silicon Graphics, que
era conocida para sus estaciones de trabajo gráficas: potentes y costosas computadoras
diseñadas para
CAPÍTULO 1. INTRODUCCION 7
aplicaciones. (Hoy, es probable que tenga más potencia de computación gráfica en su
teléfono inteligente .)
OpenGL es compatible con el hardware gráfico en la mayoría de los dispositivos informáticos
modernos, Computadoras de escritorio, computadoras portátiles y muchos dispositivos
móviles. Este sección voluntad dar que un poco de
antecedentes sobre el historial de OpenGL y sobre el hardware gráfico que lo soporta.
En los primeros ordenadores de sobremesa, los contenidos de la pantalla fueron gestionados
directamente por el Cpu. Para ejemplo , a dibujar una línea segmento en el pantalla , el CPU
sería ejecutar un bucle a conjunto el color de cada píxel que se encuentra a lo largo de la línea.
Innecesario a decir , gráficos podría tomar hasta un lote de el Tiempo de LA CPU. Y el
rendimiento gráfico fue muy lento, en comparación con lo que esperamos hoy. Así que lo
que ha cambiado? Computadoras son mucho más rápido en general, de curso , pero el grande
cambio es que en computadoras modernas, el procesamiento de gráficos se realiza mediante
un componente especializado llamado GPU, o Unidad de Procesamiento de Gráficos . Una GPU
incluye procesadores para realizar cálculos gráficos; en hecho, puede incluir un gran
número de estos procesadores que funcionan en paralelo a acelerar operaciones gráficas.
Se también incluye su propio dedicado memoria para almacenamiento cosas como imágenes y
listas de coordenadas. Los procesadores GPU tienen un acceso muy rápido a los datos que
se almacenan en GPU memoria—mucho más rápido que su acceso a los datos almacenados
en la memoria principal del ordenador.
Para dibujar una línea o realizar alguna otra operación gráfica, la CPU simplemente tiene
que enviar comandos, junto con los datos necesarios, a la GPU, que es responsable de
la rying fuera de esos comandos. El CPU descargas la mayoría de el gráfico trabajo a el GPU,
que está optimizado para llevar a cabo ese trabajo muy rápidamente. El conjunto de
comandos que el GPU bajo - los stands conforman la API de la GPU. OpenGL es un ejemplo
de una API de gráficos, y la mayoría de las GPU apoyar OpenGL en el sentido de que pueden
entender los comandos de OpenGL, o al menos que Los comandos OpenGL se pueden traducir
eficientemente en comandos que la GPU puede entender.
OpenGL no es la única API de gráficos.
La alternativa más conocida es probablemente Direct3D, una API de gráficos 3D utilizada para
Microsoft Windows. OpenGL está más ampliamente disponible, ya que no se limita a
Microsoft, sino a Direct3D es compatible con la mayoría de las tarjetas gráficas, y a menudo
ha introducido nuevas características antes de OpenGL.
He dicho que OpenGL es una API, pero de hecho es una serie de API que tienen ha
sido objeto
a la extensión y revisión repetidas . El actual versión , en temprano 2018, es 4.6, y que es muy
diferente de la versión 1.0 de 1992. Además , no es a especializados versión llamado
Openg GL ES para "sistemas integrados" como teléfonos móviles y tabletas. Y también hay
WebGL, para su uso en navegadores web, que es básicamente un puerto de OpenGL ES 2.0.
Además , a
nueva API denominada Vulkan se ha definido como un reemplazo para OpenGL; Vulkan es a
complejo , API de bajo nivel diseñada para la velocidad y la eficiencia en lugar de la facilidadde uso, y es probable que no reemplazar completamente OpenGL durante algún tiempo, si
alguna vez. Se voluntad ser útil a saber algo sobre cómo y por qué OpenGL ha cambiado. En
primer lugar, usted debe saber que OpenGL fue diseñado como un sistema "cliente/
servidor". El servidor, que es responsable de controlar la visualización del ordenador y
realizar gráficos computations, lleva a cabo comandos emitidos por el cliente. Típicamente
, el servidor es una GPU, incluyendo sus procesadores gráficos y memoria. El servidor ejecuta
OpenGL comandos . El cliente es el CPU en el mismo equipo, junto con el programa de
aplicación que está ejecutando. OpenGL
comandos provienen del programa que se ejecuta en la CPU. Sin embargo, , que es en
realidad posible para ejecutar programas OpenGL de forma remota a través de una red. Que
es , que puede ejecutar un aplicación en un ordenador remoto (el cliente OpenGL), mientras
que los cálculos gráficos y
se realizan en el equipo que realmente está utilizando (el servidor OpenGL).
La idea clave es que el cliente y el servidor son componentes independientes, y hay un
canal de comunicación entre dichos componentes. Los comandos OpenGL y los datos que
CAPÍTULO 1. INTRODUCCION 8
que necesitan se comunican desde el cliente (la CPU) al servidor (la GPU) a través de que
canal. El capacidad de el canal puede ser un limitando factor en gráficos rendimiento. Piensa
de dibujar una imagen en la pantalla. Si el LA GPU puede dibujar el imagen en microsegundos
, pero que tarda milisegundos para enviar los datos de la imagen de la CPU a la GPU,
gran velocidad de la GPU es irrelevante—la mayor parte
del tiempo que se tarda en
dibujar la imagen es comunicación hora.
Por esta razón, uno de los factores impulsores de la evolución de OpenGL ha sido el
deseo para limitar la cantidad de comunicación necesaria entre la CPU y la GPU. Uno
enfoque es almacenar información en la memoria de la GPU. Si algunos datos es va a ser
utilizado varios veces, se puede transmitir a la GPU una vez y almacenarse en la memoria
allí, donde será inmediatamente accesible a la GPU. Otro enfoque es a tratar de a disminuir
el número de comandos OpenGL que se deben transmitir a la GPU para dibujar una imagen
determinada.
OpenGL dibuja primitivos como triángulos. Especificar a primitivo significa especificando
coordinados y atributos para cada uno de sus vértices. En el OpenGL 1.0 original, un comando
separado
se utilizaba para especificar las coordenadas de cada vértice, y se necesitaba un comando
cada vez que
valor de un atributo cambiado. Para dibujar un solo triángulo sería requieren tres o más
comandos .
Dibujar un objeto complejo compuesto por miles de triángulos requeriría muchos miles
de
comandos. Incluso en OpenGL 1.1, que se convirtió en posible a dibujar tales un objeto con un
solo
comando en lugar de miles. Todos el datos para el objeto sería ser cargado en matrices , que
podría enviarse en un solo paso a la GPU. Desafortunadamente , si el objeto fue va a ser
extraviado más de una vez, entonces los datos tendrían que ser retransmitidos cada vez
que el objeto fue
dibujado. Este fue fijo en OpenGL 1.5 con Vértice Zona de influencia Objetos . Un VBO es un
bloque de
memoria en la GPU que puede almacenar las coordenadas o los valores de atributo para un
conjunto de vértices.
Esto permite reutilizar los datos sin tener que retransmitirlos desde la CPU a el
GPU cada vez que se utiliza.
Del mismo modo, OpenGL 1.1 introdujo objetos de textura para que sea posible almacenar
varios
imágenes en la GPU para su uso como texturas. Este significa que textura imágenes que son
va a
se puede reutilizar varias veces una vez en la GPU, de modo que la GPU puede cambiar
fácilmente
entre imágenes sin tener que volver a cargarlas.
• ?
A medida que se añadieron nuevas capacidades a OpenGL, la API creció en tamaño. Pero el
crecimiento fue todavía
superado por la invención de nuevas y más sofisticadas técnicas para hacer gráficos. Algunos
de
estas nuevas técnicas se añadieron a OpenGL, pero el problema es que no importa cuántos
características que agregue, siempre habrá demandas de nuevas características, así como
quejas que todos los
las nuevas características están haciendo las cosas demasiado complicadas ! OpenGL era una
máquina gigante, con
piezas siempre se pegan en ella, pero todavía no complacer a todo el mundo. El real solución
fue a
hacer que la máquina sea programable. Con OpenGL 2.0, que se convirtió en posible a escribir
programas
que se ejecutará como parte del cálculo gráfico en la GPU. El programas se ejecutan en el
GPU a velocidad de GPU. Un programador que quiera utilizar una nueva técnica gráfica
puede escribir un
programa para implementar la función y simplemente entregarla a la GPU. El API de
OpenGL no tienen
para ser cambiado. El sólo cosa que el API ha a apoyo es el capacidad a enviar programas a
la GPU para la ejecución.
Los programas se llaman shaders (aunque el término no describe realmente lo que la
mayoría de
en realidad lo hacen). Los primeros sombreadores que se introdujeron fueron sombreadores
de vértices y fragmentos
shaders. Cuando a primitivo es dibujado , algunos trabajo tiene a hacer en cada uno vértice de
el primitivo ,
como aplicar una transformación geométrica al vértice coordina o utilizar los atributos y
entorno de iluminación global para calcular el color de ese vértice. Un sombreador de vértices
es un programa
CAPÍTULO 1. INTRODUCCION 9
que puede hacerse cargo del trabajo de hacer tales cálculos "por vértice". Del mismo modo
, algunos trabajo tiene
para cada píxel dentro de la primitiva. Un sombreador de fragmentos puede hacerse cargo
del trabajo de
realizar tales cálculos "por píxel". (Los sombreadores de fragmentos también se denominan
sombreadores de píxeles .)
La idea de hardware gráfico programable fue muy exitosa, tan exitosa que en
OpenGL 3.0, el procesamiento habitual por vértice y por fragmento estaba en desuso (lo que
significa que
su uso fue desalentado). Y en OpenGL 3.1, fue eliminado del estándar OpenGL,
aunque
todavía está presente como una extensión opcional. En la práctica, todas las
características originales de
OpenGL sigue siendo compatible con las versiones de escritorio de OpenGL y probablemente
seguirá
disponible en el futuro. On el incrustado sistema lado , sin embargo, , con OpenGL ES 2.0 y
más tarde ,
el uso de sombreadores es obligatorio,y una gran parte de la API de OpenGL 1.1 ha sido
completamente
Quitado. WebGL , el versión de OpenGL para uso en navegadores web, es basado en en OpenGL
ES 2.0,
y también requiere sombreadores para hacer cualquier cosa. Sin embargo , que voluntad
comenzar nuestro estudio de
OpenGL con versión 1.1. Más de el conceptos y muchos de el detalles de que versión son
sigue siendo relevante,y ofrece un punto de entrada más fácil para alguien nuevo en la
programación de gráficos 3D .
Los sombreadores OpenGL están escritos en GLSL (OpenGL Shading Language). Como OpenGL
sí mismo ,
GLSL ha pasado por varias versiones. Nosotros voluntad gastar algunos tiempo más tarde en
el curso estudiar
GLSL ES 1.0, la versión utilizada con WebGL 1.0 y OpenGL ES 2.0. GLSL utiliza una sintaxis
similar al lenguaje de programación C.
• ?
Como comentario final sobre el hardware de GPU, debo tener en cuenta que los cálculos que
se hacen para
diferentes vértices son prácticamente independientes, y por lo que potencialmente se puede
hacer en paralelo. El
lo mismo es cierto de los cálculos para diferentes fragmentos. De hecho, las GPU pueden
tener cientos o
miles de procesadores que pueden funcionar en paralelo. Es cierto que , el individual
procesadores son
mucho menos potente que una CPU, pero luego los cálculos típicos
porvértice y
porfragmento
no son muy complicados. El grandes número de procesadores , y el grandes cantidad de
paralelismo
que es posible en los cálculos gráficos, hace que el rendimiento gráfico impresionante incluso
en
GPU bastante baratas.
Descargar