Bonjour tout le monde,
J'ai besoin de l'avis de connaisseurs en OpenGL à propos des PBOs. Il ne s'agit pas réellement de problèmes, mais plutôt de questions que je me pose vis à vis de l'emploi que j'en fais. C'est un peu une découverte/exercice.
Tout d'abord, j'ai eu besoin d'écrire du texte dans une application OpenGL, la première de mes solutions était d'avoir une simple texture avec un tableau de caractère disposer dans l'ordre ASCII. Puis d'afficher les caractères carré par carré. Les performances étaient juste catastrophique pour du texte dynamique, je précise que je me limite à utiliser les fonctions OpenGL 3.
Donc je me suis dit que j'allais plutôt faire une zone de texte, qui serait une texture sur laquelle j'allais simplement coller les lettres en pixel.
Donc, j'ai un PBO par lettre et c'est OpenGL qui gère le transfert du PBO à la texture, ce qui est beaucoup plus rapide pour afficher un texte puisque je ne dois plus régénérer de géométries et qu'il y a beaucoup moins d'opérations CPU/GPU.
Mais, ma première question est : Est ce qu'on est limité par le nombre de PBO qu'on alloue ? Dans le cas ou je veux faire de l'unicode par exemple, je vais devoir en allouer plus que 256 PBOs je pense
Sinon, et on arrive a ma deuxième question : Peut-on limiter les pixels que l'on transfert d'un PBO vers une texture ? Pour le moment, je bind un PBO sur UNPACK et j'utilise la fonction glTexSubImage2D() pour transférer sur la texture au bon endroit.
Je peux choisir où je colle, mais ce serait encore mieux de pouvoir choisir dans le PBO la partie que l'on souhaite copier. Comme ça, j'aurais un seul PBO avec toutes les lettres.
Ma troisième question, qui complète la deuxième finalement : Peut-on définir une méthode de transfert des pixels d'un PBO ? Je voudrais par exemple au lieu de remplacer, multiplier ou additionner pour faire des effets. Un peu à la manière de GL_BLEND. Ce serait énorme puisque cela me permettrait d'avoir des lettres de différentes couleurs et de réécrire par au dessus les autres lettres.
Voila. Il y a certainement de meilleurs méthodes pour afficher du texte avec OpenGL, si vous avez des solutions aussi rapide qui me permette de coller du texte sur n'importe quelle surface, je suis preneur.
Merci et bonne journée.
Partager