9
votes

Dessiner du texte sur une tramebuffer à Linux de C

Comment un programme peut-il dessiner du texte sur un tampon de cadre mappé en tant que tableau? Ce qu'il faut, c'est à la fois un moyen de représenter les caractères individuels et de dessiner les caractères pixels par pixel de manière à pas trop inefficace. La représentation des caractères devrait idéalement être définie uniquement dans le code et aucune bibliothèques tierces ne serait requise.

Est-ce que quelqu'un connaît-il du code à faire cela disponible sous une licence libérale? Ou un outil pour générer des définitions de données pour la police à utiliser dans le code de programme par exemple. Le tableau de bitmap glyphe / valeurs de caractère?


2 commentaires

L'intention d'afficher le résultat sur un écran ou d'écrire dans un fichier?


Pour afficher à l'écran, idéalement jusqu'à 60fps


3 Réponses :


-2
votes

Pour dessiner une ligne sur un tableau 2D, utilisez le algorithme de Besengam . < P> Pour dessiner les caractères en utilisant des lignes droites, construisez votre alphabet à l'aide d'une série de MOVETO, LINETO. Par exemple. Pour un simple 'l': xxx


0 commentaires

0
votes

Je pense que la meilleure façon de le faire consiste à utiliser des polices bitmap: HTTP : //www.iua.upf.es/~ggeiger/redbookhtml/ch09.html . Ce tutoriel est pour OpenGL mais vous trouvez probablement beaucoup d'informations utiles.


1 commentaires

Le lien est cassé. Un excellent exemple de la raison pour laquelle les réponses uniquement des liaisons ne sont pas utiles.



3
votes

Je n'ai aucune information spécifique aux tampons de cadre, mais j'ai un moyen intéressant d'encoder une police.

Si vous avez une application qui peut écrire sur le format XBM , vous pouvez encoder un police juste en créant une image contenant tous les caractères. Le fichier XBM peut être inclus sous forme de fichier C ou C ++ et en utilisant les compensations appropriées, vous pouvez facilement accéder à un seul caractère. Assurez-vous que chaque personnage commence à une coordonnée X divisible par 8, car l'image est codée comme un bit par pixel; Tout ce qui ne se lie pas sur une limite de 8 bits aura besoin de masquage et de déplacement.


0 commentaires