IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Tiled Map et Sprite Batching


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 11
    Par défaut Tiled Map et Sprite Batching
    Bonsoir,

    C'est peut être une question récurrente sur internet mais je n'ai pas encore trouvé de réponse assez complète.

    Je cherche à développer un mini moteur OpenGL 2D qui serait capable d'afficher des sprites et des tiled map. Sachant qu'une tiled map peut être composée de plusieurs couches de tuiles venant de différentes tilesets (ou une seule si on ne peut pas bind plusieurs textures) et que certaines tuiles pourraient même être animés. Généralement une tiled map est statique mais je préférerai aussi la prévoir dynamique pour la modifier facilement en fonction du type de jeux. Le sprite batch lui serait chargé d'afficher toutes les autres sprites du jeu très dynamique comme les entitées ou l'interface.

    Comment pourrais-je implémenter mon TiledMap et mon SpriteBatch pour qu'il soit optimal en terme de vitesse d'affichage et d'utilisation mémoire ?

    J'ai déjà pensé utiliser un vbo de triangles strip pour les tileds maps entièrement remplis ou un vbo de triangles + vbo d'indices pour celle partiellement remplis mais je ne suis pas satisfait. Sinon il y aurait il des solutions avec un geometry shader ?

    Merci d'avance pour vos suggestions.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 141
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Concernant le geometry shader, il vous servira pour diminuer l'utilisation de la bande passante entre le CPU et le GPU. En effet, vous n'aurez plus qu'à passer un seul point (et un float pour la taille) au lieu de quatre points au GPU. Le geometry shader, utilisant le centre et la taille, se chargera de reconstruire les quatre points pour en faire un carré (ou deux triangles, peu importe).

    Mais bon, je trouve que cela révèle de l'optimisation. Commencez par utiliser un VBO, ou pour chaque sprite, vous utilisez quatre points + quatres coordonnées de texture et le tour est joué, cela devrait déjà être un bon début.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 11
    Par défaut
    D'accords, merci d'avoir répondu. Vous me conseillez donc de laisser tomber ce genre d'optimisation pour me concentrer sur quelque chose de fonctionnel.

    J'ai quand même une autre question sur une méthode de tiled map statique que j'ai trouvé plusieurs fois sur internet mais dont je ne comprends pas le shader.
    Cette méthode sauvegarde une tiled map sur une image RGB et chaque pixel code une tuile. Pour l'affichage il n'utilise que un rectangle donc un vbo de 4 ou 6 vertices selon la primitive de dessin. Je ne comprends donc pas comment en envoyant seulement au shader ce vbo, la texture de sauvegarde et la texture de tileset, ils puissent afficher autant de tuile.

    On peut trouver un exemple ICI (code).

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 141
    Billets dans le blog
    150
    Par défaut
    Peut+être cette explication pourra vous aider : https://www.developpez.net/forums/d1...s/#post9110193
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. soucis dans tile mapping
    Par talonneur56 dans le forum SDL
    Réponses: 3
    Dernier message: 23/12/2011, 16h45
  2. [SFML]Problème Tile Mapping
    Par Charvalos dans le forum Bibliothèques
    Réponses: 19
    Dernier message: 30/09/2010, 10h44
  3. Gestion d'une tile map en 3D
    Par Yordarus dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 10/02/2010, 11h34
  4. Quelques questions sur le tile mapping
    Par LexxusEVC dans le forum Développement 2D, 3D et Jeux
    Réponses: 11
    Dernier message: 21/10/2009, 08h33
  5. Conception RPG Maps 3D + Sprite 2D, Quelle marche à suivre ?
    Par TheCypher dans le forum Développement 2D, 3D et Jeux
    Réponses: 21
    Dernier message: 15/09/2009, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo