Je cherche un algorithme rapide pour dessiner une ligne soulignée. Pour cette application, le contour doit seulement avoir une largeur de 1 pixel. Il devrait être possible, que ce soit par défaut ou par le biais d'une option, de connecter deux lignes de façon transparente, si elles partagent un point commun.Recherche d'un algorithme de rendu de ligne contourné rapidement
Excusez l'art ASCII mais c'est probablement le meilleur moyen de le démontrer.
ligne normale:
##
##
##
##
##
##
ligne "embarquées":
**
*##**
**##**
**##**
**##**
**##**
**##*
**
Je travaille sur un dsPIC33FJ128GP802. C'est un petit microcontrôleur/processeur de signal numérique, capable de 40 MIPS (millions d'instructions par seconde). Il est seulement capable de maths entières (addition, soustraction et multiplication: il peut faire la division, mais il prend ~ 19 cycles.) Pour traiter une couche OSD en même temps et seulement 3-4 MIPS du temps de traitement est disponible pour les calculs, la vitesse est critique. Les pixels occupent trois états: noir, blanc et transparent; et le champ vidéo est de 192x128 pixels. C'est pour Super OSD, un projet Open Source:
La première solution que j'ai pensée était de dessiner des rectangles 3x3 avec des pixels soulignés sur le premier passage et des pixels normaux sur la deuxième passe, mais cela pourrait être lent, comme pour chaque pixel d'au moins 3 pixels est écrasé et le temps passé à les dessiner est gaspillé. Donc je cherche un moyen plus rapide. Chaque pixel coûte environ 30 cycles. La cible est < 50 000 cycles pour dessiner une ligne de 100 pixels de longueur.
Je ne pense pas que [comment puis-je créer une ligne d'épaisseur arbitraire en utilisant Bresenham?] (Http://stackoverflow.com/questions/1222713/how-do-i-create-a-line-of- arbitrarary-thickness-using-bresenham) est une copie en tant que telle, mais elle est probablement pertinente. – dmckee
+1 & Merci pour le lien.Cela implique des lignes soulignées, donc je cherche un moyen efficace de tracer une ligne avec une bordure. Dessiner une ligne épaisse puis une ligne mince serait essentiellement identique à ce que j'ai donné en option. –
La largeur de ligne est-elle 1 pixel? – ybungalobill