Comment utiliser OpenGL moderne pour les jeux 2D?

9

J'ai trouvé une pléthore de tutoriels OpenGL (3.0+) "modernes" pour la 3D, mais je n'ai trouvé presque rien lorsque je cherche des informations sur la façon de l'utiliser pour le développement de jeux 2D. Comment puis-je commencer à utiliser OpenGL pour 2D gamedev?

Plus précisément, je souhaite obtenir des réponses aux sujets suivants:

  • Comment configurer mes différentes matrices pour la projection orthographique?
  • Les shaders sont-ils aussi largement utilisés dans les applications 2D que dans les applications 3D? Si oui, quel est leur objectif dans le cadre 2D?
  • Comment dois-je gérer le nombre énorme de textures évidemment nécessaires pour un jeu 2D?

Je m'excuse pour la question relativement large, mais j'ai passé beaucoup de temps à chercher et j'ai trouvé très peu d'informations utiles qui s'appliquent à OpenGL moderne.

Alexis King
la source

Réponses:

11
  • Comment configurer mes différentes matrices pour la projection orthographique?

Votre objectif est 2D, non? Vous n'avez donc pas besoin de projection. La projection est l'acte de condenser un monde 3D en un plan 2D. Définissez le shader pour qu'il 0.0définisse par défaut la coordonnée Z de chaque sommet et vous devez être défini.

Vous pouvez cependant utiliser une matrice d'échelle pour les coordonnées X et Y. Mise à l' échelle si -10.0à 10.0devient -1.0à 1.0. Par souci de référence, la matrice pour ce faire est:

0.1   0.0   0.0
0.0   0.1   0.0
0.0   0.0   1.0
  • Les shaders sont-ils aussi largement utilisés dans les applications 2D que dans les applications 3D? Si oui, quel est leur objectif dans le cadre 2D?

Ils peuvent être. Ils peuvent toujours être utilisés pour l'éclairage par pixel, donnant une fausse profondeur aux objets. Ils peuvent également être utilisés pour des effets de texture, des effets d'eau, la génération d'images ... vous pouvez même les utiliser pour faire des calculs physiques avec un peu de ruse.

Une autre façon de le dire est: tout ce pour quoi ils sont utilisés en 3D. Il est simplement appliqué différemment et n'est pas aussi bien documenté. Bien que les gens qui jouent à des jeux 2D n'obtiendront probablement pas votre cas si vous n'avez pas d'effets réalistes, ils ne sont donc pas nécessaires non plus.

Bien que vous ayez besoin de connaître les bases des shaders pour rendre un sprite de toute façon.

  • Comment dois-je gérer le nombre énorme de textures évidemment nécessaires pour un jeu 2D?

Tout comme vous le faites en 3D. Des grappes d'objets de texture, PBO et un Atlas de texture ou quelques-uns. Probablement quelques structures / classes, ainsi que des maux de tête. Je pense que ce serait appelé "Asset Management", ou quelque chose de similaire.

  • Comment démarrer avec 2D gamedev?

Il existe probablement quelques tutoriels. Cependant, puisque la version 3D est plus courante, je dirais d'apprendre OpenGL pour 3D et ensuite d'appliquer ce que vous apprenez à son homologue 2D. 3D et 2D sont très similaires, 2D ne suit tout simplement pas la coordonnée Z.

Wolfgang Skyler
la source
5
Pour la 2D, vous pouvez toujours utiliser la projection orthographique et différentes coordonnées Z pour effectuer la mise en mémoire tampon Z , sinon vous devrez faire l' algorithme du peintre vous-même et dessiner dans le bon ordre.
congusbongus
@congusbongus en fait, si vous êtes plein de transparence, vous devrez très probablement faire vous-même l'algorithme du peintre ...
Panda Pyjama