¿Cómo usar OpenGL moderno para juegos 2D?

9

He encontrado una gran cantidad de tutoriales "modernos" de OpenGL (3.0+) para 3D, pero no he encontrado nada cuando busco información sobre cómo usarlo para el desarrollo de juegos en 2D. ¿Cómo puedo comenzar a usar OpenGL para gamedev 2D?

Específicamente, estoy interesado en obtener respuestas a los siguientes temas:

  • ¿Cómo debo configurar mis diversas matrices para la proyección ortográfica?
  • ¿Los sombreadores son tan utilizados en aplicaciones 2D como en 3D? Si es así, ¿cuál es su propósito en la configuración 2D?
  • ¿Cómo debo manejar la gran cantidad de texturas obviamente necesarias para un juego 2D?

Pido disculpas por la pregunta relativamente amplia, pero he pasado mucho tiempo buscando y he encontrado muy poca información útil que se aplique a OpenGL moderno.

Alexis King
fuente

Respuestas:

11
  • ¿Cómo debo configurar mis diversas matrices para la proyección ortográfica?

Tu objetivo es 2D, ¿verdad? Entonces no necesitas ninguna proyección. La proyección es el acto de condensar un mundo 3D en un plano 2D. Establezca el sombreador de manera que 0.0tenga como valor predeterminado la coordenada Z de cada vértice y debería estar configurado.

Sin embargo, puede usar una matriz de escala para las coordenadas X e Y. Aumentar la escala de modo -10.0que 10.0se vuelve -1.0a 1.0. Por razones de referencias, la matriz para hacerlo es:

0.1   0.0   0.0
0.0   0.1   0.0
0.0   0.0   1.0
  • ¿Los sombreadores son tan utilizados en aplicaciones 2D como en 3D? Si es así, ¿cuál es su propósito en la configuración 2D?

Ellos pueden ser. Todavía se pueden usar para la iluminación por píxel, lo que otorga cierta profundidad falsa a los objetos. También se pueden usar para efectos de textura, efectos de agua, generación de imágenes ... incluso podría usarlos para hacer cálculos físicos con un poco de truco.

Otra forma de decirlo es: todo para lo que se usan en 3D. Se aplica de manera diferente y no está tan bien documentado. Aunque las personas que juegan juegos en 2D probablemente no van a estar en su caso si no tiene efectos reales, por lo que tampoco son necesarios.

Aunque de todos modos necesitarás conocer los conceptos básicos de los sombreadores para renderizar un sprite.

  • ¿Cómo debo manejar la gran cantidad de texturas obviamente necesarias para un juego 2D?

Tal como lo haces en 3D. Racimos de objetos de textura, PBO y un Atlas de textura o algunos. Probablemente algunas estructuras / clases, y dolores de cabeza también. Creo que eso se llamaría "Gestión de activos", o algo similar.

  • ¿Cómo puedo comenzar con 2D gamedev?

Probablemente hay algunos tutoriales por ahí. Sin embargo, dado que la versión 3D es más común, yo diría que aprenda OpenGL para 3D y luego aplique lo que aprende a su contraparte 2D. 3D y 2D son muy similares, 2D simplemente no realiza un seguimiento de la coordenada Z.

Wolfgang Skyler
fuente
55
Para 2D, aún podría usar la proyección ortográfica y diferentes coordenadas Z para realizar el almacenamiento en Z , de lo contrario tendría que hacer el algoritmo del pintor usted mismo y dibujar en el orden correcto.
congusbongus
@congusbongus en realidad, si estás actuando con transparencia, lo más probable es que tengas que hacer el algoritmo del pintor tú mismo ...
Panda Pajama