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?

Foi útil?

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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top