Abate de backface do espelho OpenGL
Pergunta
No OpenGL, eu tenho um objeto em que escala em -1 ao longo de um eixo ... isso resulta no objeto que não está renderizando corretamente porque todas as faces dianteiras agora estão nas caras de volta. Além de desativar o abate, como eu conseguiria esse objeto renderizar certo? Existe uma maneira de fazer isso sem modificar os vértices normais texturizados que compõem meu modelo?
Solução
Você pode simplesmente alternar o modo de abate. Você pode usar glCullFace(mode)
decidir quais triângulos devem ser abatidos. Fornecendo um parâmetro de GL_BACK
significa que apenas os polígonos frontais são renderizados, enquanto um parâmetro de Gl_front significa que apenas os polígonos de intermediário são renderizados. Portanto, se a sua transformação significa que os polígonos "backfacing" estão de fato na frente, chamando glCullFace(GL_FRONT)
deve fazer o truque.
Como alternativa, você também pode controlar quais polígonos são considerados front/backfacing usando glFrontFace(dir)
, com um parâmetro de GL_CW
(no sentido horário) ou GL_CCW
(no sentido anti -horário) (O padrão é no sentido anti -horário, portanto, se você o definir como Polígonos de Backfacing Originaly do Clocksie, será considerado o FrontFacing).