Pergunta rápida: Qual é o método mais rápido para renderizar uma grande variedade de partículas 4x4 / 8x8 em opengl? Atualmente eu gasto 2 triângulos para cada um, mas acho que é lento, então eu realmente gostaria de saber se estou fazendo certo .....
opengl
graphics
software-engineering
user1010005
fonte
fonte
Respostas:
Você pode desenhar pontos com o OpenGL.
Você deseja chamar glDrawArrays () ou glDrawElements () com GL_POINTS (em vez de GL_TRIANGLE_STRIP ou o que estiver usando.)
Isso atrairá pontos para a tela com base no tamanho atual do ponto, que você pode definir via glPointSize () . Você também pode usar o pseudônimo desses pontos, mas, na minha experiência, nem todos os drivers / hardware suportam pontos de pseudônimo.
Você não pode texturizar esses pontos; eles são apenas uma única cor.fonte
No núcleo OpenGL 3.2 e superior, os shaders de geometria estão disponíveis para uso. Para dar uma breve visão geral, você só diria ao OpenGL para desenhar os pontos que representam as posições de suas partículas, e esses pontos passariam pelo shader de vértice normalmente, mas quando eles chegarem ao shader de geometria, ele constrói o retângulo (fora de dois tris) emitindo vértices para o próximo estágio do pipeline. Junto com os vértices, você pode gerar programaticamente coordenadas normais e de textura.
Como tudo isso é feito em hardware, tenho certeza de que é a maneira mais rápida no momento de renderizar partículas de sprites pontuais.
fonte