![]() |
Bbop-2D 0.4.1-alpha
Bbop-2D is a c++ library based on openGL to make 2D game. It implement sprite, shape, light and more.
|
Voici une série de tuto sur la plus part des class de la librairie, il décrive le rôle de chaque class mais ne donne pas tous les détails.
La documentation elle pourra répondre à toutes vos questions.
Tous les getters de la librairie sont marqués comme const.
Premier programme hello world avec Bbop, affichage d'un rectangle blanc.
Initialisation de la librairie avec une fenêtre glfw.
Mise en place d'une Scene pour afficher notre premier rectangle.
Creation d'un rectangle.
Exemple dans une boucle d'affichage avec une fenêtre glfw.
Toutes les formes géométriques hérites de la class mère Shape, elles ont donc en commun la plus part de leurs attributs mais les utilisent de différente manières.
Ces attributs sont tous accessible avec des getters et setters.
Attributs communs.
Toutes les Shape hérites de BbopDrawable, qui est la class mère de tous les objets dessinables de la librairie.
Le rectangle est la forme la plus simple de la librairie et possède les attributs suivant.
Tous les attributs de la Shape sont utilisés de manière trivial !
Exemple simple de pour créer un rectangle bleu de 100px par 100px
!!! AVANT TOUS AFFICHAGE IL FAUT SAVOIR UTILISER LA CLASS Scene !!!
todo
todo
todo
Le Sprite est basiquement un rectangle avec une Texture.
Elle stock cette texture avec un pointeur et le setter associé.
Une des grosse différence avec le RectangleShape est que le Sprite gère Vector3i Color comme un filtre de couleur sur la texture.
Ce filtre peut-être activé avec getter et setter.
La class AnimatedSprite permet de créer un sprite avec une sprite sheet.
Elle va animé ce Sprite automatiquement en fonction de la durée entre chaque frame.
Exemple:
La Scene est l'une des class principale de la librairie, elle sert à afficher les BbopDrawable et configurer le rendue de la lumière.
La Scene possède des attributs pour paramètrer la lumière ambiant.
La Scene possède aussi un pointeur vers une camera pour déterminer le point de vue avec le quel afficher les BbopDrawable.
On peut donc utiliser une camera personnalisé pour afficher des éléments dans notre Scene.
Pour déssiner sur une Scene lors d'une frame il faut d'abord "l'utiliser" pour transmettre les infos de la Scene au GPU.
Après cela on peut dessiner des BbopDrawable.
Voici un exemple du pipeline complet de rendue avec une Scene.
La methode render() supprime le vecteur de lumière de la scene, il ne faut donc pas oublier d'ajouter les lumières à chaque frames.
La camera permet de regarder a des endroit précis dans la Scene.
Elle utilise une position et une scale qui détermine là ou elle regarde et le zoom de celle ci.
Exemple
Toute les shapes possède une instance de CollisionBox qui suit automatiquement les dimensions de la shape.
!!! Attenetion, la boîte de collision est rectangulaire, elle n'est donc pas représentative des Shape autre que RectangleShape et Sprite.
Il, n'y à pas encore de gestion des collision circulaire,triangulaire et convex, il faut donc l'implémenter vous même (faite un fork svppp) !!!
On peut annuler ce suivi avec ce setter:
On peut récupérer la CollisionBox d'une Shape pour s'en servir dans la gestion des collision:
Bbop2D intègre une gestion de la lumière (Lumop)
Les reflets de la lumière dans la scène sont calculer lors d'une deuxième passe de rendue sur le frame buffer de la scene avec un shader personnalié.
La class Light est un simple lumière à 360°.
Elle possède les getters et setters pour changer tous ces attributs.
Exemple:
La light va venir émettre de la lumière en plus de l'éclaire ambiant de la scene, cela permet un éclairage dynamique, personnalisé et plus détaillé.
La light possède deux attribut pour la diriger.
Lumop intégre la gestion de normal map sur les Sprite.
Une normal map permet un éclairage dynamique d'une texture pour donner l'impression de relief.
Un Sprite peut se voire attribué une Texture pour représenter sa normal Map.
La scene créé un deuxième frame buffer qui contient les normals maps à utiliser lors du rendue final de la lumière.
todo
Bbop contient sa propre gestion des vecteurs.
Tous les transfert e point ou de couleur se font à l'origine par le passage d'un vecteur. Toute les méthode n'intégre pas un passage a plusieur paramètre pour faire passer un vecteur.
La class Texture permet la creation et l'utilisation simplifé de texture openGL.
Elle est utilisé par Sprite.
Exemple: