É possível misturar gráficos 2D e 3D em um único jogo OpenGL ES 2.0, por favor?
Eu tenho muitos gráficos 2D no meu jogo. Os gráficos 2D são representados por dois polígonos triangulares (formando um retângulo) com textura neles. Eu uso a matriz ortográfica para renderizar toda a cena.
No entanto, preciso adicionar alguns efeitos 3D ao meu jogo. Portanto, desejo usar a câmera em perspectiva para renderizar as malhas.
É possível misturar câmeras ortográficas e de perspectiva em uma cena? Se sim, haverá um grande custo de desempenho para isso? Existe alguma abordagem recomendada para fazer isso de forma eficaz? Eu terei 90% dos gráficos 2D e apenas 10% dos 3D.
A plataforma de destino é o OpenGL ES 2.0 (iOS, Android). Eu uso C ++ para desenvolver.
Obrigado.
Respostas:
Isso é feito facilmente.
Defina a transformação da vista como ortográfica para o material 2D e renderize-a. Antes de limpar o buffer de moldura, desenhe os efeitos com uma projeção em perspectiva. A projeção afetará apenas a geometria desenhada após ela; portanto, apenas defina o modo desejado antes do desenho.
É da mesma maneira que lidamos com HUDs em nosso FPS. :)
O único impacto no desempenho é que você está alterando uma variável uniforme (a matriz do seu projeto), certo? Portanto, tente agrupar as coisas para minimizar as alterações de estado - as mesmas coisas antigas.
fonte
Só haverá um pequeno impacto no desempenho se você calcular a matriz de projeção ortográfica e de perspectiva toda vez que renderizar no buffer de quadros. Sugiro armazená-las em uma variável, calculando e armazenando-as uma vez no código de inicialização e, em seguida, usando-as
glLoadMatrix
para carregar a matriz. O método de renderização ficaria assim em pseudo-código:fonte