Colores Ysombras

6,718 views
6,573 views

Published on

Colores, sombras y OpenGL!!!

Published in: Technology, Art & Photos
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,718
On SlideShare
0
From Embeds
0
Number of Embeds
33
Actions
Shares
0
Downloads
117
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • Colores Ysombras

    1. 1. Tema 7 Colores y Sombras http://www.espol.edu.ec Fuente de:
    2. 2. Índice <ul><li>Color </li></ul><ul><ul><li>La luz </li></ul></ul><ul><ul><li>Percepción del color </li></ul></ul><ul><ul><li>Características psicológicas del color </li></ul></ul><ul><ul><li>Profundidad de color </li></ul></ul><ul><ul><li>Modelos de color </li></ul></ul><ul><ul><li>Colores en OpenGL </li></ul></ul>http://www.espol.edu.ec Fuente de:
    3. 3. La luz <ul><li>El color es una banda de frecuencias del espectro electromagnético </li></ul><ul><li>El espectro visible abarca desde los 4.3*1014 Hz (rojo) hasta los 7.5 * 10 14 Hz (violeta) </li></ul><ul><li>El ojo humano distingue aproximadamente unos 400.000 colores diferentes </li></ul>http://www.espol.edu.ec Fuente de:
    4. 4. La luz <ul><li>La luz blanca esta formada por el conjunto de radiaciones visibles </li></ul><ul><ul><li>Un objeto sobre el que incide luz blanca absorberá algunas frecuencias y reflejará otras </li></ul></ul><ul><ul><li>La combinación de éstas últimas determinará el color del objeto </li></ul></ul><ul><ul><li>La frecuencia dominante se denomina color o matiz de la luz </li></ul></ul>http://www.espol.edu.ec Fuente de:
    5. 5. Percepción del color <ul><li>El color es la impresión producida al incidir en la retina los rayos luminosos difundidos o reflejados por los cuerpos </li></ul><ul><li>El ojo humano actúa como sensor y el cerebro interpretar las imágenes </li></ul><ul><ul><li>Los conos están especializados en la visión del color </li></ul></ul><ul><ul><li>Especializados en: </li></ul></ul><ul><ul><ul><li>azul y violeta </li></ul></ul></ul><ul><ul><ul><li>verde y amarillo </li></ul></ul></ul><ul><ul><ul><li>rojo y naranja </li></ul></ul></ul><ul><li>Los bastones requieren muy poca luz y no son capaces de discernir los colores. </li></ul>http://www.espol.edu.ec Fuente de:
    6. 6. Características psicológicas del color <ul><li>Cromaticidad: </li></ul><ul><ul><li>Matiz </li></ul></ul><ul><ul><li>Luminosidad </li></ul></ul><ul><ul><li>Tono </li></ul></ul><ul><ul><li>Saturación </li></ul></ul><ul><li>Además de la frecuencia, otras propiedades para caracterizar nuestra percepción de la luz </li></ul>http://www.espol.edu.ec Fuente de:
    7. 7. Profundidad de color <ul><li>Color de 1-bit </li></ul><ul><ul><li>Permite 2 colores, utiliza 1 bit dedicado a la información de color por cada píxel (2 1 ). </li></ul></ul><ul><li>Color de 4-bits </li></ul><ul><ul><li>16 colores por píxel, utiliza 4 bits dedicados a la información de color (2 4 ) </li></ul></ul><ul><li>Color de 8-bits </li></ul><ul><ul><li>256 colores ya que se utilizan 8 bits dedicados a la información de color por cada píxel (2 8 ) </li></ul></ul><ul><ul><li>Se pueden utilizar los 8 bits para imágenes de un tono continuo en blanco y negro con 256 matices de color </li></ul></ul><ul><li>Color de 24-bits </li></ul><ul><ul><li>Permite 16.777.216 colores, se utilizan 24 bits dedicados a la información de color por cada píxel (2 24 ) </li></ul></ul><ul><ul><li>8 bits para cada color: rojo, verde y azul </li></ul></ul><ul><ul><li>El inconveniente es la utilización de memoria que se necesita para pantallas de alta resolución (2MB para 1024x768) </li></ul></ul>
    8. 8. Modelos de color <ul><li>El propósito de un modelo de color es facilitar la especificación de colores en algún formato estándar </li></ul><ul><li>Especificación de un modelo de coordenadas 3D y un subespacio dentro donde cada color se representa por un punto único </li></ul><ul><li>La mayoría de los modelos de color que se utilizan están orientados hacia el hardware como monitores o impresoras </li></ul>
    9. 9. Modelos de color <ul><li>Espacio de color CIE </li></ul><ul><ul><li>El CIE (&quot;d'Eclairage de Internationale de la Comisión&quot;) definió tres fuentes de luz hipotéticas, x, y, y z , resultando curvas positivas </li></ul></ul><ul><ul><li>El diagrama de cromaticidad CIE es un modelo de dos dimensiones de visión del color </li></ul></ul><ul><ul><li>El diagrama de cromaticidad CIE refleja el tono y la saturación, pero es necesario un modelo tridimensional para añadir el componente del brillo </li></ul></ul>
    10. 10. Modelos de color <ul><li>El modelo de color RGB </li></ul><ul><ul><li>Modelo aditivo de color que es representado por el cubo del color del RGB </li></ul></ul><ul><ul><li>R, G, y B representan los colores producidos por los fósforos rojos, verdes y azules </li></ul></ul><ul><ul><li>El cubo se proyecta dentro del espacio de color del CIE XYZ </li></ul></ul><ul><ul><li>Los valores de R,G,B se asignan en el intervalo de 0 a 1 </li></ul></ul>
    11. 11. Colores en OpenGL <ul><li>OpenGL especifica un color utilizando las intensidades separadas de componentes rojo, verde y azul (espacio de color RGB) </li></ul><ul><li>Definimos un color con la función glColor* </li></ul><ul><li>Los elementos geométricos se dibujan con los atributos activos en cada momento </li></ul><ul><li>En cualquier momento se pude modificar el valor de los atributos, sustituyendo el nuevo valor al anterior </li></ul><ul><li>Los atributos podrán apilarse y desapilarse </li></ul>http://www.espol.edu.ec Fuente de:
    12. 12. Colores en OpenGL <ul><li>void triangulo2(void){ glBegin(GL_TRIANGLES); glColor3f(0.0,0.0,1.0); glColor3f(0.0,1.0,0.0); glVertex2f(0.0,-0.4); glVertex2f(-0.4,0.2); glVertex2f(0.4,0.2); </li></ul><ul><li>glEnd(); </li></ul><ul><li>} </li></ul>http://www.espol.edu.ec Fuente de:
    13. 13. Colores en OpenGL <ul><li>Al dibujar polígonos se puede controlar que se dibujen sus aristas o solo el interior </li></ul><ul><li>control de visibilidad de las aristas se realiza con la función glEdgeflag(b) </li></ul><ul><li>También se pueden conseguir gradientes </li></ul><ul><li>Con un triángulo, por ejemplo, bastará con asignar un color distinto a cada vértice </li></ul><ul><li>OpenGL renderiza la imagen con el gradiente de color resultante entre ellos </li></ul>http://www.espol.edu.ec Fuente de:
    14. 14. Colores en OpenGL <ul><li>glBegin GL_TRIANGLES </li></ul><ul><ul><li>glColor3f( 1.0,0.0,0.0 ) //color rojo </li></ul></ul><ul><ul><li>glVertex3f( 0.0,1.0,0.0 ) </li></ul></ul><ul><ul><li>glColor3f( 0.0,1.0,0.0 ) //color verde </li></ul></ul><ul><ul><li>glVertex3f( -1.0,-1.0,0.0 ) </li></ul></ul><ul><ul><li>glColor3f( 0.0,0.0,1.0 ) //color azul </li></ul></ul><ul><ul><li>glVertex3f( 1.0,-1.0,0.0 ) </li></ul></ul><ul><li>glEnd </li></ul>
    15. 15. Colores en OpenGL <ul><li>Canal alpha </li></ul><ul><ul><li>El modelo RGBA de color dota a cada punto de una cuarta componente llamada canal alfa </li></ul></ul><ul><ul><li>Imagen de 8 bits en escala de grises </li></ul></ul><ul><ul><li>OpenGL lo interpreta de la manera siguiente </li></ul></ul><ul><ul><ul><li>Un valor alpha de 0 (color negro) indica transparencia total </li></ul></ul></ul><ul><ul><ul><li>Un valor de 128 (color gris &quot;puro&quot;) indica semitransparencia </li></ul></ul></ul><ul><ul><ul><li>Un valor de 255 (color blanco) indica opacidad total </li></ul></ul></ul>
    16. 16. Colores en OpenGL <ul><li>Mezclando dos colores generamos un tercero, si tengo un objeto de color rojo y le pongo delante un papel translúcido de color azul, la intersección de ambos se verá de color lila </li></ul>
    17. 17. Colores en OpenGL <ul><li>Activar el mezclado de colores y desactivarlo con las funciones </li></ul><ul><ul><li>glEnable(GL_BLEND) </li></ul></ul><ul><ul><li>glDisable(GL_BLEND) </li></ul></ul><ul><li>Para indicar como debe hacerse la mezcla se usará la función </li></ul><ul><ul><li>glBlendFunc(Glenum factorfuente, Glenum factordestino) </li></ul></ul><ul><ul><ul><li>glBlendFunc(GL_ONE,GL_ZERO) </li></ul></ul></ul><ul><ul><ul><ul><li>importancia de 1 (máxima) al canal alfa de la fuente y de 0 (nula) al canal alfa del destino </li></ul></ul></ul></ul><ul><ul><ul><li>glBlendFunc(GL_SRC_ALPHA, GL_ONE) </li></ul></ul></ul><ul><ul><ul><ul><li>multiplique a la fuente por su valor de alfa y sume el resultado al color destino </li></ul></ul></ul></ul>
    18. 18. Colores en OpenGL <ul><li>Ocultaciones </li></ul><ul><ul><li>OpenGL permite utilizar dos métodos de ocultación </li></ul></ul><ul><ul><ul><li>El algoritmo de las caras de detrás </li></ul></ul></ul><ul><ul><ul><ul><li>Consiste en ocultar las caras que no se dibujarían porque formarían parte de la parte trasera del objeto </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>glEnable(GL_CULL_FACE) </li></ul></ul></ul></ul></ul><ul><ul><ul><li>Algoritmo del Z-buffer </li></ul></ul></ul><ul><ul><ul><ul><li>Cada vez que se va a renderizar un pixel, comprueba que no se haya dibujado antes en esa posición un píxel que esté más cerca respecto a la cámara </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>glEnable(GL_DEPTH_TEST) </li></ul></ul></ul></ul></ul>
    19. 19. <ul><li>Sin ocultaciones </li></ul><ul><li>Ocultando caras detrás </li></ul>Colores en OpenGL
    20. 20. <ul><li>Sin Z-Buffer </li></ul><ul><li>Con Z-Buffer </li></ul>Colores en OpenGL
    21. 21. Colores en OpenGL <ul><li>Eliminando caras detrás </li></ul><ul><li>Caras detrás + Z-Buffer </li></ul>
    22. 22. Colores en OpenGL <ul><li>La combinación de estos dos algoritmos no siempre es adecuada </li></ul><ul><li>Caras detrás + Z-Buffer </li></ul><ul><li>Z-Buffer </li></ul>
    23. 23. Colores en OpenGL <ul><li>El color de los materiales </li></ul><ul><ul><li>La forma en que la luz incide sobre las superficies de los objetos depende de las propiedades del material de los mismos </li></ul></ul><ul><ul><li>OpenGL la forma de definir estas propiedades es la función: </li></ul></ul><ul><ul><ul><li>void glMaterial{if}[v](GLenum face, GLenum pname, TYPEparam); </li></ul></ul></ul><ul><ul><ul><ul><li>El primer argumento determina la cara del objeto donde se aplica el material </li></ul></ul></ul></ul><ul><ul><ul><ul><li>propiedad del material que va a fijarse </li></ul></ul></ul></ul>
    24. 24. Colores en OpenGL
    25. 25. Indice <ul><li>Sombras </li></ul><ul><ul><li>Efecto falloff (Distance falloff) </li></ul></ul><ul><ul><li>Sombreado </li></ul></ul><ul><ul><li>Tipos de sombreado </li></ul></ul><ul><ul><li>Sombreado en OpenGL </li></ul></ul><ul><ul><li>Stencil Buffer </li></ul></ul><ul><ul><li>Volúmenes de sombras </li></ul></ul><ul><ul><li>Fusión (Dithering) </li></ul></ul><ul><ul><li>Paletas de Ventana </li></ul></ul>
    26. 26. Sombras <ul><li>Definición: </li></ul><ul><li>Una sombra es una región de oscuridad donde la luz es obstaculizada. Una sombra ocupa todo el espacio de detrás de un objeto opaco con una fuente de luz frente a él. La sección eficaz de una sombra es una silueta bidimensional o una proyección invertida del objeto que bloquea la luz. </li></ul>
    27. 27. Sombras <ul><li>Propiedades: </li></ul><ul><ul><li>Cuanto menor el ángulo entre dirección de la luz y objeto, más corta la sombra. </li></ul></ul><ul><ul><li>Cuanto menor el ángulo entre dirección de la luz y superficie donde aparece la sombra, mayor será esta. </li></ul></ul><ul><ul><li>Fuente luz no puntual-> umbra y penumbra </li></ul></ul><ul><ul><li>Múltiples focos->múltiples sombras </li></ul></ul><ul><ul><li>Múltiples focos colores-> Color de cada sombra será del color de la luz del otro foco </li></ul></ul>
    28. 28. Sombras <ul><li>Sombras por ordenador: </li></ul><ul><ul><li>Simula como se comportan las caras del polígono cuando es iluminado por una fuente de luz virtual </li></ul></ul><ul><ul><li>Altera el color de las caras de un modelo 3D basándose en el ángulo de la superficie con la fuente de luz. </li></ul></ul>
    29. 29. Sombras <ul><li>Ejemplo: </li></ul>sombreado en las caras sin líneas en los bordes Imagen renderizada
    30. 30. Sombras-Efecto Falloff <ul><li>Se puede observar que las superficies de las caras son brillantes en la caja delantera y más oscuras en la situada en la parte de atrás. También la superficie sobre la que están pasa de claro a oscuro según se aleja. </li></ul><ul><li>produce imágenes más realistas </li></ul>efecto falloff sin efecto falloff
    31. 31. Tipos de sombreado <ul><li>Sombreado plano (Flat shading) </li></ul><ul><ul><li>Definición: sombrea cada polígono de un objeto basándose en el ángulo que existe entre la superficie normal del polígono y la dirección de la fuente de luz, sus respectivos colores y la intensidad de la luz </li></ul></ul><ul><ul><li>Renderizado de alta velocidad </li></ul></ul><ul><ul><li>Desventaja: aspecto poco natural en modelos bajos en polígonos </li></ul></ul>
    32. 32. Tipos de sombreado <ul><li>Comparación Flat Shading-Phong </li></ul>
    33. 33. Tipos de sombreado <ul><li>Sombreado Gouraud </li></ul><ul><ul><li>Simula el efecto de difusión de la luz y los colores a través de la superficie del objeto </li></ul></ul><ul><ul><li>Aplica el patrón de iluminación a cada vértice del polígono y entonces promedia los valores de color en toda la superficie del objeto para así alcanzar un efecto de sombreado suave </li></ul></ul><ul><ul><li>El resultado final de todo esto es un polígono con un suave gradiente de intensidades sobre su superficie </li></ul></ul>
    34. 34. Tipos de sombreado <ul><li>Sombreado Gouraud: Bandas de Mach </li></ul><ul><ul><li>objetos sombreados con Gouraud muestran las zonas de unión de polígonos </li></ul></ul>
    35. 35. Tipos de sombreado <ul><li>Sombreado de Phong </li></ul><ul><ul><li>usado en los gráficos 3D para la interpolación de superficies en polígonos rasterizados, para obtener mejor resolución especular. </li></ul></ul><ul><ul><li>proporciona una mejor aproximación a la aplicación punto-por-punto de un modelo de reflexión superficial, asumiendo una suavidad variante de la superficie como vector normal. </li></ul></ul><ul><ul><li>en lugar de interpolar intensidades de los vértices, según se hace en el sombreado Gouraud, se interpole normales a lo largo del polígono </li></ul></ul>
    36. 36. Tipos de sombreado <ul><li>Sombreado Blinn–Phong </li></ul><ul><ul><li>intercambia la precisión visual por eficiencia computacional </li></ul></ul>
    37. 37. Reflexión <ul><li>Modelo de Lambert </li></ul><ul><ul><li>Superficies en las que la luz que incide sobre ellas se reparte de forma que sólo depende del ángulo de incidencia y es independiente del ángulo de observación. </li></ul></ul><ul><ul><li>Sólo se puede emplear con ciertos materiales. </li></ul></ul><ul><ul><li>Sirve como una buena aproximación cuando las características de la superficie no se conocen. </li></ul></ul>
    38. 38. Reflexión <ul><li>Modelo de Oren-Nayar </li></ul><ul><ul><li>Similar al de Lambert. </li></ul></ul><ul><ul><li>Es más preciso aunque también más complicado. Los cálculos se realizan teniendo en cuenta un factor de rugosidad de la superficie. </li></ul></ul>
    39. 39. Sombreado en OpenGL <ul><li>glShadeModel( GLenum modo ) selecciona el modelo de sombreado: suave o plano. El modo puede ser: </li></ul><ul><ul><li>Plano  GL_FLAT </li></ul></ul><ul><ul><li>Suave  GL_SMOOTH </li></ul></ul>
    40. 40. Sombreado OpenGL GL_Flat <ul><li>glShadeModel(GL_FLAT); glBegin(GL_TRIANGLES);         glColor3f(1.0f, 0.0f, 0.0f);  // color rojo glVertex3f(-1.0f, 0.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f);  // color verde       glVertex3f(1.0f, 0.0f, 0.0f); glColor3f(1.0f, 0.0f, 0.0f);  // color azul       glVertex3f(0.0f, 1.0f, 0.0f); glEnd(); </li></ul>
    41. 41. Sombreado OpenGL GL_SMOOTH <ul><li>glShadeModel(GL_SMOOTH); glBegin(GL_TRIANGLES);         glColor3f(1.0f, 0.0f, 0.0f);  //activamos el color rojo glVertex3f(-1.0f, 0.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f);  // verde       glVertex3f(1.0f, 0.0f, 0.0f); glColor3f(1.0f, 0.0f, 0.0f);  // azul       glVertex3f(0.0f, 0.0f, 1.0f); glEnd(); </li></ul>
    42. 42. Sombreado- Stencil Buffer <ul><li>Sirve para mejorar la calidad de las sombras y los reflejos. </li></ul><ul><li>Añade planos de bits adicionales para cada píxel además de los bits de color y profundidad. </li></ul><ul><li>Es una manera de marcar píxeles en una renderización para controlar su actualización en renderizaciones siguientes. </li></ul><ul><li>Funciones en OpenGL: </li></ul><ul><ul><li>glEnable(GL_STENCIL_TEST) </li></ul></ul><ul><ul><li>glDisable(GL_STENCIL_TEST) . </li></ul></ul><ul><ul><li>glClearStencil </li></ul></ul>
    43. 43. Volúmenes de sombras <ul><li>Construcción: </li></ul><ul><ul><li>se proyecta un rayo de luz a través de cada vértice en la proyección de la sombra del objeto hacia el infinito. </li></ul></ul><ul><ul><li>El conjunto de estas proyecciones generan un volumen que engloba todos los puntos que pudieran posiblemente verse ensombrecidos por un objeto . </li></ul></ul><ul><ul><li>Cualquier objeto dentro de este volumen debería ser ensombrecido </li></ul></ul>
    44. 44. Volúmenes de sombras
    45. 45. Volúmenes de sombras- Técnicas <ul><li>Existen 3 técnicas aplicables en tiempo real. </li></ul><ul><li>Características comunes: </li></ul><ul><ul><li>dibujar la escena como si estuviera completamente en sombra. </li></ul></ul><ul><ul><li>para cada punto de luz: </li></ul></ul><ul><ul><ul><li>usar la información de profundidad de la escena para construir una mascara en el stencil buffer </li></ul></ul></ul><ul><ul><ul><li>la escena de nuevo como si estuviera completamente iluminada, usando el stencil buffer para la máscara de las áreas sombreadas. </li></ul></ul></ul>
    46. 46. Volúmenes de sombras- Técnicas <ul><li>Paso de profundidad (Depth pass) </li></ul><ul><ul><li>Si la superficie de un objeto esta en sombra, habrá más superficies sombreadas frontalmente entre ella y el ojo que con las superficies traseras sombreadas. </li></ul></ul><ul><li>Error de Profundidad (Depth fail) </li></ul><ul><ul><li>En vez de contar las caras frontales sombreadas de la superficie del objeto, las superficies traseras se pueden contar así fácilmente con el mismo resultado </li></ul></ul><ul><li>OR exclusivo </li></ul><ul><ul><li>Aproxima las dos anteriores, no trata propiamente con la intersección de los volúmenes de sombras </li></ul></ul>
    47. 47. Fusión (Dithering) <ul><li>Definición: </li></ul><ul><ul><li>técnica usada para crear la ilusión de profundidad de color en imágenes con una paleta de colores limitada. </li></ul></ul><ul><ul><li>los colores no disponibles en la paleta original son aproximados por una difusión de los píxel coloreados dentro de la paleta disponible. </li></ul></ul><ul><ul><li>El ojo humano percibe la difusión como una mezcla de colores. </li></ul></ul>
    48. 48. Fusión <ul><li>Incremento de fusión: </li></ul>glDisable(GL_DITHER) glEnable( GL_DITHER )
    49. 49. Paletas <ul><li>En Windows existen dos tipos de paletas: </li></ul><ul><ul><li>Paletas lógicas </li></ul></ul><ul><ul><li>Paletas del sistema </li></ul></ul><ul><li>Existe una paleta especial que es la paleta por defecto que es la que utiliza el usuario a no ser que crea una. </li></ul><ul><li>No se puede acceder a la paleta del sistema directamente. Los accesos se hacen mediante la paleta lógica. </li></ul><ul><li>Como programadores, podemos usar los colores de la paleta por defecto o bien crear nuestra propia paleta lógica y asociarla al contexto de dispositivo. </li></ul>
    50. 50. Creación de Paletas de Ventana <ul><li>Crear una paleta en OpenGL: </li></ul><ul><li>HPALETTE CreatePalette( </li></ul><ul><li>CONST LOGPALETTE *lplgpl // puntero a la paleta lógica de color </li></ul><ul><li>); </li></ul><ul><li>Esta paleta utiliza una estructura lógica de paleta (LOGPALETE) que contiene 256 entradas, especificando los 8 bits para las componentes R,G,B. </li></ul>
    51. 51. Arbitraje de paletas <ul><li>Windows es un S.O. multitarea  Ejecución simultánea de varias aplicaciones. </li></ul><ul><li>Pero el hardware solo permite 256 colores en la paleta del sistema que deben ser compartidos por todas las aplicaciones en ejecución . </li></ul><ul><li>Si alguna de las aplicaciones modifica la paleta del sistema puede que se altere la presentación de imágenes de otras aplicaciones produciendo efectos no deseados. </li></ul><ul><li>Windows proporciona un conjunto de mensajes para arbitrar el uso de paletas . </li></ul>
    52. 52. Arbitraje de paletas <ul><li>Mensajes: </li></ul><ul><ul><li>WM_QUERYNEWPALETTE  Preguntar a la ventana principal si desea copiar las entradas de su paleta privada en las entradas del sistema. </li></ul></ul><ul><ul><li>WM_PALETTECHANGED  Indica a la ventana que puede seleccionar la paleta, incluso si no es la ventana activa. </li></ul></ul>
    53. 53. Creación de paletas <ul><li>DescribePixelFormat()  para determinar si una aplicación requiere una paleta. </li></ul><ul><li>Retorna una estructura PÍXELFORMATDESCRIPTOR </li></ul><ul><li>Si el valor del bit PFD_NEED_PALETTE está activo  crear una paleta para la aplicación </li></ul>
    54. 54. Estructura de una paleta <ul><li>Reservar memoria: </li></ul><ul><li>typedef struct tagLOGPALETTE { // lgpl </li></ul><ul><li>WORD palVersion; </li></ul><ul><li>WORD palNumEntries; </li></ul><ul><li>PALETTEENTRY palPalEntry[1]; </li></ul><ul><li>} LOGPALETTE; </li></ul><ul><li>Llamar a la función CreatePalette() </li></ul><ul><li>Cada entrada en la paleta es una estructura PALETTEENTRY </li></ul>
    55. 55. Estructura de una paleta <ul><li>typedef struct tagPALETTEENTRY { // pe </li></ul><ul><li>BYTE peRed; </li></ul><ul><li>BYTE peGreen; </li></ul><ul><li>BYTE peBlue; </li></ul><ul><li>BYTE peFlags; </li></ul><ul><li>} PALETTEENTRY; </li></ul><ul><li>-          peRed, peGreen y peBlue representan las intensidades relativas para las componentes de 8 bits RGB. Así cada una de las 256 entradas de la paleta contendrá una definición de color de 24 bits. </li></ul><ul><li>-          PeFlags se utiliza para especificar opciones avanzadas de la paleta. Normalmente su valor será NULL. </li></ul>
    56. 56. Destrucción de una paleta <ul><li>case WM_DESTROY: </li></ul><ul><li>// Desactiva el contexto de generaci ó n actual y lo borra </li></ul><ul><li>wglMakeCurrent(hDC,NULL); </li></ul><ul><li>wglDeleteContext(hRC); </li></ul><ul><li>  ReleaseDC(hWnd,hDC); </li></ul><ul><li>  // Borra la paleta si fue creada </li></ul><ul><li>if(hPalette != NULL) </li></ul><ul><li>DeleteObject(hPalette); </li></ul><ul><li>  // Le dice a la aplicacion que termine despues de que se cierre la ventana </li></ul><ul><li>PostQuitMessage(0); </li></ul><ul><li>break; </li></ul>
    57. 57. Librería GL <ul><li>Principales funciones para el manejo de colores y sombras en OpenGL </li></ul><ul><ul><li>glAccum - establece los valores de un píxel en el buffer. </li></ul></ul><ul><ul><li>glClearColor – borra los buffers de color. </li></ul></ul><ul><ul><li>glClearDepth – asigna un valor de profundidad al buffer de profundidad. </li></ul></ul><ul><ul><li>glColor – selecciona el color actual en modo RGBA. </li></ul></ul>
    58. 58. Librería GL <ul><li>glColorMask – activa o desactiva la modificación de las componentes de color en los buffers de color. </li></ul><ul><li>glColorMaterial – permite seleccionar las propiedades de un material siguiendo el color definido por glColor. </li></ul><ul><li>glDisable – desactiva una característica de OpenGl </li></ul>
    59. 59. Librería GL <ul><li>glEnable – activa una característica de OpenGl. </li></ul><ul><li>glDrawBuffer – selecciona un buffer de color para dibujar. </li></ul><ul><li>glFog – especifica los parámetros de niebla. </li></ul><ul><li>glIndex – selecciona el índice de color actual. </li></ul>
    60. 60. Librería Gl <ul><li>glLogicOp – selecciona la operación lógica para el modo de color indexado. </li></ul><ul><li>glPolygonMode – selecciona el modo en que se generan los polígonos. </li></ul><ul><li>glShadeModel – asigna el sombreado por defecto (suave o plano) </li></ul>

    ×