Pergunta

Estou tendo problemas para envolver a cabeça como eles funcionam. Primeiro, em um jogo 2D, a matriz de projeção deve ser configurada como orto com esquerda, direita, superior e inferior, combinando com a janela, à direita? Mas quando a janela redimensiona, devo alterar o GlViewPort, não a matriz de projeção? E como faço para manter a proporção?

Alguém poderia explicar os propósitos dessas duas coisas, em 2º jogo ortográfico, para que eu possa entender melhor?

Parece que o OpenGL está fazendo muitas coisas inúteis em uma configuração 2D. Rasterização e calcula fragmentos quando as imagens já estão lá, convertendo coordenadas de vértice para o NDC apenas para serem convertidas de volta ao que eles já estão por GlViewPort.

Além disso, como é o Legacy Free OpenGL, temos que fazer nossas próprias matrizes, mas não nossos próprios cálculos que a GlViewPort?

Obrigado.

Foi útil?

Solução

Não confunda o que você insere para GL e o que ele produz.

Os parâmetros que você usa para calcular a matriz orto são os que se correlacionam com o seu entrada. A saída de uma matriz de projeção é sempre o cubo [-1: 1] x [-1: 1] x [-1: 1].

A viewport traduz esse cubo para as coordenadas do seu alvo de renderização. Portanto, é isso que você deseja alterar para corresponder ao seu novo tamanho de janela (bem, isso e o próprio Framebuffer).

Sim, GL faz muitas coisas inúteis para um caminho de renderização em 2D. Afinal, é uma API 3D ...

Terminarei dizendo que você não precisa construir matrizes para fazer transformações 2D, desde que seus saídas de shader de vértice no cubo que mencionei anteriormente. Se você deseja escrever o canto superior direito da viewport, sempre poderá passar seus vértices diretamente como (0,0) (0,1) (1,0) (1,1) e simplesmente produzir isso.

Outras dicas

Não tenho certeza em qual idioma você está usando o OpenGL, mas se você estiver procurando por C ++ neste site, http://nehe.gamedev.net/ Praticamente cobre tudo e tem tutoriais de "Hello World" até jogos básicos e efeitos 3D.

Espero que ajude

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