Compartilhar via


Especificando o polígono a ser mosaico

Especifique um polígono (possivelmente contendo furos) a ser mosaico usando:

Para polígonos sem furos, o processo de especificação é exatamente como no OpenGL:

  1. Comece com gluBeginPolygon.
  2. Chame gluTessVertex para cada vértice no limite.
  3. Termine o polígono com uma chamada para gluEndPolygon.

Se um polígono consistir em vários contornos, incluindo furos e furos dentro de furos, especifique os contornos um após o outro, precedendo cada um por gluNextContour. Quando você chama gluEndPolygon, ele sinaliza o fim do contorno final e inicia a mosaico. Você pode omitir a chamada para gluNextContour antes do primeiro contorno. A função gluBeginPolygon começa a especificação de um polígono a ser mosaico e associa um objeto de mosaico, tessobj, a ele. As funções de retorno de chamada a serem usadas são aquelas que você associa ao objeto tessellation com gluTessCallback.

A função gluTessVertex especifica um vértice no polígono a ser mosaico. Chame gluTessVertex para cada vértice no polígono. O parâmetro tessobj da função é o objeto tessellation a ser usado, v contém as coordenadas de vértice tridimensional e os dados são um ponteiro arbitrário que é enviado para o retorno de chamada associado a GLU_VERTEX. Normalmente, os dados contêm dados de vértice, coordenadas de textura, informações de cor ou qualquer outra coisa que o aplicativo possa exigir.

A função gluNextContour marca o início do contorno seguinte quando vários contornos compõem o limite do polígono a ser mosaico. O parâmetro de tipo da função pode ser GLU_EXTERIOR, GLU_INTERIOR, GLU_CCW, GLU_CW ou GLU_UNKNOWN. Essas constantes servem apenas como dicas para a mosaico. Se você acertar, a mosaico pode ir mais rápido. Se você errar, eles são ignorados, e a mosaico ainda funciona.

Para um polígono com buracos, um contorno é o contorno exterior, e os outros são interiores. Se você não chamar gluNextContour imediatamente após gluBeginPolygon, o primeiro contorno será considerado do tipo GLU_EXTERIOR.

GLU_CW e GLU_CCW indicam polígonos orientados no sentido horário e anti-horário. Escolher quais são no sentido horário e que são no sentido anti-horário é arbitrário em três dimensões, mas em qualquer plano, há duas orientações diferentes; use os tipos GLU_CW e GLU_CCW de forma consistente. Use GLU_UNKNOWN se você não souber qual usar.

A função gluEndPolygon indica o fim da especificação do polígono. Também indica que a mosaico pode começar a usar o tessobj do objeto tessellation.