• Los colores de cada pixel son almacenados:
– Modo RGB o RGBA
– Modo Color-Index
• Los colores son almacenados en el buffer de color.
– glColor3f (1.0, 0.0, 0.0);
– glBegin (GL_POINTS);
– glVertex3fv (point_array);
– glEnd();
• Se aplica el modelo de Shading.
• Las primitivas son rasterizadas (convertidas a imagen 2d).
• Rastering implica determinar qué cuadrados de la grilla, en coordenadas de la ventana, son ocupados por la primitiva.
• Cada cuadrado tiene asociado un color, z (depth), coordenadas de textura. El conjunto se llama Fragmento.
• Los pixeles son elementos del framebuffer.
• Un pixel con un fragmento son combinados para formar el nuevo pixel.
• Un dato de color se almacena en un pixel.
• El número de colores se determina por el número de planos de bits del framebuffer.
• 8 planos de colores = 256
• Para obtener el número de planos disponibles:
– void glGetIntegerv(GLenum pname, GLint *params)
• pname: GL_RED_BITS, GL_GREEN_BITS, GL_BLUE_BITS, GL_ALPHA_BITS, GL_INDEX_BITS.
• params: retorna el valor buscado.
• Valores de cada componente:
• Dithering es una técnica que combina algunos colores
– glEnable(GL_DITHER);
• Usa un mapa de color (o tabla de búsqueda).
• Selecciona el color actual:
void glColor3{b s i f d ub us ui} (TYPEr, TYPEg, TYPEb);
void glColor4{b s i f d ub us ui} (TYPEr, TYPEg, TYPEb, TYPEa);
void glColor3{b s i f d ub us ui}v (const TYPE*v);
void glColor4{b s i f d ub us ui}v (const TYPE*v);
• Conversión de valores de colores a números flotantes. (ver tabla)
• Selecciona el índice de color actual:
void glIndex{sifd ub}(TYPE c);
void glIndex{sifd ub}v(const TYPE *c);
• Especifica el índice usado para limpiar el buffer de índice de color:
• OpenGL no tiene funciones para cargar el mapa de colores. Ver glutSetColor().
• voidglShadeModel (GLenum mode);
– mode: GL_SMOOTH (default), GL_FLAT.
• Ejemplo: smooth.c
No hay comentarios:
Publicar un comentario