Rasterização
Rasterização é o processo pelo qual um primitivo é convertido em uma imagem bidimensional. Cada ponto dessa imagem contém informações como dados de cor, profundidade e textura. Um ponto e suas informações associadas são chamados de fragmento. A posição de varredura atual, conforme especificado com glRasterPos*, é usada de várias maneiras durante esse estágio para desenhar pixels e bitmaps. Diferentes problemas surgem ao rasterizar pontos, segmentos de linha e polígonos. Além disso, retângulos de pixel e bitmaps precisam ser rasterizados.
Com o OpenGL, você controla a rasterização usando as seguintes funções:
- Primitives. Controlar como os primitivos são rasterizados usando funções que determinam dimensões e padrões de stipple: glPointSize, glLineWidth, glLineStipple e glPolygonStipple. Controlar como as faces frontal e traseira dos polígonos são rasterizadas com glCullFace, glFrontFace e glPolygonMode.
- Pixels. Várias funções controlam o armazenamento de pixels e os modos de transferência. A função glPixelStore* controla a codificação de pixels na memória do cliente e glPixelTransfer* e glPixelMap* controlam como os pixels são processados antes de serem colocados no framebuffer. Especifique um retângulo de pixel com glDrawPixels; controlar sua rasterização com glPixelZoom.
- Bitmaps. Bitmaps são retângulos de zeros e outros que especificam um padrão específico de fragmentos a serem produzidos. Cada um desses fragmentos tem os mesmos dados associados. A função glBitmap especifica um bitmap.
- Memória de textura. Quando a texturização está habilitada, a texturização mapeia uma parte de uma imagem de textura especificada para cada primitivo. Esse mapeamento é feito usando a cor da imagem de textura no local indicado pelas coordenadas de textura de um fragmento para modificar a cor RGBA do fragmento. Especifique uma imagem de textura com glTexImage2D ou glTexImage1D. As funções glTexParameter* e glTexEnv* controlam como os valores de textura são interpretados e aplicados a um fragmento.
- Nevoeiro. Para misturar uma cor de neblina com a cor pós-texturização de um fragmento rasterizado, use um fator de mesclagem que depende da distância entre o ponto ocular e o fragmento. Use glFog* para especificar a cor da neblina e o fator de mesclagem.