Je suis actuellement en train de migrer un tas d'applications du rendu SDL2 (en interne en utilisant OpenGL) au rendu OpenGL "pur". Au cours de ce travail, j'ai compris comment télécharger des textures sur le GPU et appris que chaque texture a un index. Pour faire du texte, j'utilise les fonctions SDL_TTF qui vous permettent, au fond, de télécharger une texture sur le GPU représentant du texte. La plupart des applications que je migre ne sont pas lourdes mais j'ai remarqué un problème possible avec elles. Imaginez une application qui accepte la saisie de texte utilisateur et qui s'affiche à l'écran: chaque frappe génère une nouvelle texture avec tout le texte entré (toute autre texture précédente liée à la même fonctionnalité sera supprimée). Donc, pour écrire "Bonjour" nous aurions cinq textures: "H", "He", "Hel", "Hell" et enfin "Hello". Comme dit, chaque texture "précédente" (dans ce cas de "H" à "Enfer") serait supprimée et seule la mémoire de "Hello" resterait. Pourtant, dans les applications lourdes de texte (par exemple, en utilisant cette méthode pour mettre le score d'un jeu, en faisant assez mal pour générer une nouvelle texture pour chaque image) beaucoup de textures seraient téléchargées et supprimées et la texture index continuerait à croître.OpenGL + SDL_TTF: recyclage d'index de texture
Ma question principale est la suivante: est-ce que OpenGL va recycler ces index ou va-t-il manquer de chiffres et tomber en panne? PS: Je suis conscient de la possibilité d'emballer tous les caractères TTF dans un atlas et juste obtenir les lettres dont j'ai besoin. Je n'aimerais pas voir cela maintenant, à moins que mon approche actuelle ne soit dangereuse (cette sorte d'atlas ressemble à d'anciennes polices bitmap). PS2: Je suis également conscient que changer de textures n'est pas toujours performant (GPU), mais ces applications ne sont pas difficiles graphiquement et ont de bonnes performances dans les systèmes plus anciens.
Si cela vous concerne, pourquoi ne pas simplement remplacer les données de texture sans recréer l'identifiant/nom de la texture? C'est à dire. 'glTexImage' à nouveau, ou allouer une grande texture et remplacer des parties de ses données plus tard. – keltar
Oui, oui, c'est exactement ce que je prévois de faire à l'avenir :). Voir, tous les textes qui peuvent changer (par exemple, le marqueur de score ci-dessus dans un jeu ou des boîtes de conseil) sont encapsulés dans des classes qui gèrent la suppression de leurs ressources (elles ont généralement une longue durée de vie, pas beaucoup d'index consommés).Je pourrais très bien les étendre pour "remplacer" la texture actuelle, mais je ne savais pas au sujet d'un code hérité que je traîne. Merci beaucoup. –