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 :

Afficher du texte avec opengl es 2.0 : Comment gerer les quads?


Sujet :

OpenGL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 53
    Points : 36
    Points
    36
    Par défaut Afficher du texte avec opengl es 2.0 : Comment gerer les quads?
    Salut,

    J'implemente une fonction pour afficher du texte en utilisant le texture mapping.
    Jaimerais avoir votre opinion quand a la meilleur maniere de proceder pour afficher les quads qui supporterons le texte (2 triangles par lettres).
    L'objectif etant de trouver une technique permettant d'avoir un texte dynamique (qui changerait a chaque frame) et aussi rapide que possible.
    ( 1 seul apel a glDrawElement,... ).
    Dois-je creer un buffer dynamic et le modifier chaque fois que le texte change ? ou y a t-il une possibilite d'avoir un buffer contenant un seul quad, et d'instancier ce quad autant que necessaire ? ou encore autre chose ?

    Merci

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 883
    Points : 219 328
    Points
    219 328
    Billets dans le blog
    123
    Par défaut
    Bonjour,

    Au tout début, vous devriez partir sur une solution "full fat" (mode gros bourrin) et utiliser des solutions non optimisés juste pour tester la faisabilité. Soit, vous allez afficher du texte avec juste des appels à glVertexPointer() / glTexturePointer() / glIndexPointer(). Une fois que vous avez un truc qui marche vous allez pouvoir réfléchir sur comment optimiser le tout.

    En première solution que je vois, ce serait d'utiliser des vertex / index buffers statiques (ou constants) qui contiendront un nombre de quads limité et fixe. Si vous avez un texte qui ne change pas de taille c'est parfait, si vous avez un texte assez dynamique, vous pouvez toujours prévoir plus de quads que nécessaires et afficher des espaces (quads transparent) pour les quads non utilisés. Après, seul les coordonnées de textures changeront à chaque affichage.

    Une autre solution est d'avoir un quad constant (vertexs + index buffers constants) et de le dessiner plusieurs fois à plusieurs positions différentes (pour chaque lettre). Bien entendu pour chaque lettre, vous modifierez les coordonnées de textures.
    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
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 53
    Points : 36
    Points
    36
    Par défaut
    Ahah le monde est petit, j'ai fait un stage a Teesside
    Merci pour ta reponse. J'aurais du preciser que mon moteur utilise opengl es 2.0, donc pas de pipeline fixe.

    Une autre solution est d'avoir un quad constant (vertexs + index buffers constants) et de le dessiner plusieurs fois à plusieurs positions différentes (pour chaque lettre). Bien entendu pour chaque lettre, vous modifierez les coordonnées de textures.
    Justement a propose de ca, comment dessiner plusieurs fois le meme vertex et index buffer sans multiplier les appels a glDrawElement? (qui sont serieusement mauvais pour les performances).

    J'ai fait une premiere passe en utilisant un buffer dynamic que je modifie si le text change. Ca marche plutot pas mal, mais je trouverais plus elegant d'instancier un meme vertex+index buffer pour chaque lettre comme tu l'as suggere. Quelqu'un a une piste ??

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 883
    Points : 219 328
    Points
    219 328
    Billets dans le blog
    123
    Par défaut
    Citation Envoyé par Charlie111 Voir le message
    Merci pour ta reponse. J'aurais du preciser que mon moteur utilise opengl es 2.0, donc pas de pipeline fixe.
    Hum, je crois que j'avais donné des réponses qui était compatible avec tout les pipeline ...

    Justement a propose de ca, comment dessiner plusieurs fois le meme vertex et index buffer sans multiplier les appels a glDrawElement? (qui sont serieusement mauvais pour les performances).
    Une technique est d'utiliser de l'instanciation, qui permet de donner, par exemple, une matrice différente par instance. On peut imaginer passer différente texCoord (ou même juste un float en se débroullant bien). Sinon, êtes vous sur que le glDrawIndexed et si cher ? sachant que l'on évite au moins les multiples tranfert de buffers avec des VBO.
    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. Afficher du texte avec SDL_ttf dans un environnement OpenGL
    Par Davidlouiz dans le forum API graphiques
    Réponses: 2
    Dernier message: 11/05/2012, 22h52
  2. Afficher du texte avec SDL et OpenGL
    Par moejul dans le forum SDL
    Réponses: 4
    Dernier message: 12/04/2011, 11h07
  3. Afficher du texte avec OpenGL
    Par Happy dans le forum Contribuez
    Réponses: 0
    Dernier message: 27/09/2009, 00h29
  4. [Javascript] Afficher du texte avec des intervalles
    Par Invité4 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/01/2005, 21h29
  5. Comment afficher du texte avec swing ?
    Par meda dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 27/10/2004, 14h35

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