Comment rendre les polices et le texte avec SDL2 efficacement?

Vu ce post ici sur l'utilisation de SDL_ttf pour afficher du texte dans un jeu. Cependant, cette approche nécessite l'appel de SDL_CreateTextureFromSurface(), avec le SDL_FreeSurface() et SDL_DestroyTexture() à chaque image.

Est la création de textures (et probablement par la suite d'avoir à envoyer au GPU) de chaque trame quelque chose qui peut considérablement l'impact de mes performances?

serait-il plus sage d'utiliser SDL_ttf seulement pour créer une texture avec toute ma rendu charset et puis blit à partir de là, moi-même, caractère par caractère?

Modifier: je suis à la recherche de rendre simple des polices à espacement fixe en anglais (le code ASCII de base).

peut-être, mais n'oubliez pas que "le dessin du texte" avec une police moderne n'est rien comme "une prise de lettres, puis de les mettre en regard les uns des autres" (que la manière dont les polices de travail en 1984. Nous avons déménagé beaucoup depuis l'époque). Polices modernes mettre les lettres ensemble, l'espacement correct entre eux, effectuer subtile remplacement le cas échéant, d'obtenir des contours lisses basé sur pointsize choisi, et beaucoup d'autres choses que vous perdez par le traitement de la police que, fondamentalement, une image bitmap.
D'accord, mais pour les besoins de la présente discussion, supposons que nous sommes de nous limiter à de simples polices à espacement fixe et des caractères ASCII. Je vais essayer d'obtenir une idée approximative de ce que tout cela texture de la création et de la suppression entraînera en termes de CPU/GPU utilisation
juste point vaut la peine d'ajouter à la poste)
Créez simplement votre texte une fois, garder cette texture jusqu'à ce que la valeur de texte a changé et redessiner la texture de vos cheveux lorsque le texte n'est pas le même. Avec cette méthode, vous n'aurez pas de redessiner votre texte à chaque image et vous permettra d'économiser un peu de temps de rendu.
Je suis venu à travers cette question, en cherchant une solution à ce problème. Comment je veux le résoudre, est d'utiliser un tampon de surface où je voulais passer tout le texte sur une image donnée avec BlitSurface et puis, après tout, le texte est ajouté à cela, créez une texture de celle-ci et de le dessiner. Serait-ce une bonne solution ou serait-ce encore la performance de frapper boucle pour faire de chaque image? Ma connaissance de la façon dont exactement SDL2 travaux sur les niveaux inférieurs n'est pas très bon, alors je serais heureux si vous pouviez m'expliquer pourquoi ou pourquoi pas c'est une bonne solution. Merci.

OriginalL'auteur introiboad | 2015-03-15