Le mot scanline apparaît deux fois dans le code dans la procédure TOptimized24BitBitmap.PrepareBits; (fichier Optimizedbitmap.pas)
Le but de cette source est d'aller plus vite, donc il s'agit de faire le moins d'appels possibles à cette méthode qui mine de rien consomme un peu de ressources.
Voila tout.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 26 févr. 2008 à 00:31
Bonjour, j'ai un petit problème : étant dans l'impossibilité de lancer l'executable, je ne peux pas apprecier ton code dans toute sa splendeur. Mais j'ai juste une question... pourquoi le mot "scanline" n'apparait nulle part dans ton code ? ... Désolé je n'ai pas la fiche ni la plupart des fichiers .dcu, je comprends donc très mal la plupart des sources postées ici :(
cs_barbichette
Messages postés220Date d'inscriptionlundi 30 octobre 2000StatutMembreDernière intervention15 juillet 2013 25 juin 2007 à 11:58
Salut,
En effet, suite à la discution sur le forum, j'ai bien étudié les deux.
Les performances sont en gros les même. MAIS seulement lorsque l'on doit redessiner tout le bitmap.
Sinon, il est bien évident que de modifier quelques pixels puis de transférer tout le bitmap est bien plus lent.
Je regarde toujours pourquoi get/setdibits ne marche tout le temps chez moi. Ca pourra toujours servir... Il doit sûrement y a voir des bugs ailleurs...
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 25 juin 2007 à 09:31
L'utilisation de Scanline semble être un sujet qui plaît ces temps-ci !
Merci à Florenth d'avoir pris du temps pour mettre au propre ce que je continuais à brouillonner salement !
Salut Delphiprog !
Ta présence se fait de plus en plus rare par les temps qui courent, alors ça me fait plaisir que ce code te plaise !
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 23 juin 2007 à 23:06
Y a pas à dire, c'est du grand art, de la haute voltige, que dis-je, du Florenth pur jus :))
En plus, c'est bien codé !
Et hop, je mets dans ma caisse à outils ce petit bijou :)
Bravo pour ce code.
NB : Heureusement qu'il y a quelques personnes comme toi pour relever le niveau.
Oui Cirec, y'a décidément des gens qui croient qu'il n'ont rien à apprendre sur rien... ce qui est totalement faux !
Par contre, je relativiserais le gain de performances. En fait, suivant le calcul que tu fais, il se peut que GetDIBits ne soit pas loin derrière Scanline[] (je suis arrivé à 5ms d'écart entre les deux, mais bon, le calcul durait 500ms !).
Dans TOUS les cas, ma technique de Scanline[] est plus rapide. J'ai pas dit LA plus rapide (on doit pas en être loin quand même) mais c'est déjà bien mieux que ce que j'ai vu avant.
Merci à vous trois pour vos appréciations !
Albedo039
Messages postés18Date d'inscriptionmercredi 8 novembre 2006StatutMembreDernière intervention31 janvier 2008 23 juin 2007 à 18:06
Moi, je l'ai déjà mis dans mes codes favoris :))
fbalien
Messages postés251Date d'inscriptiondimanche 7 décembre 2003StatutMembreDernière intervention11 novembre 2016 23 juin 2007 à 16:34
excellent
70 lignes de codes pour un résultat maximum
26 févr. 2008 à 10:32
Le but de cette source est d'aller plus vite, donc il s'agit de faire le moins d'appels possibles à cette méthode qui mine de rien consomme un peu de ressources.
Voila tout.
26 févr. 2008 à 00:31
25 juin 2007 à 11:58
En effet, suite à la discution sur le forum, j'ai bien étudié les deux.
Les performances sont en gros les même. MAIS seulement lorsque l'on doit redessiner tout le bitmap.
Sinon, il est bien évident que de modifier quelques pixels puis de transférer tout le bitmap est bien plus lent.
Je regarde toujours pourquoi get/setdibits ne marche tout le temps chez moi. Ca pourra toujours servir... Il doit sûrement y a voir des bugs ailleurs...
25 juin 2007 à 09:31
Merci à Florenth d'avoir pris du temps pour mettre au propre ce que je continuais à brouillonner salement !
24 juin 2007 à 11:45
Ta présence se fait de plus en plus rare par les temps qui courent, alors ça me fait plaisir que ce code te plaise !
23 juin 2007 à 23:06
En plus, c'est bien codé !
Et hop, je mets dans ma caisse à outils ce petit bijou :)
Bravo pour ce code.
NB : Heureusement qu'il y a quelques personnes comme toi pour relever le niveau.
23 juin 2007 à 19:07
Par contre, je relativiserais le gain de performances. En fait, suivant le calcul que tu fais, il se peut que GetDIBits ne soit pas loin derrière Scanline[] (je suis arrivé à 5ms d'écart entre les deux, mais bon, le calcul durait 500ms !).
Dans TOUS les cas, ma technique de Scanline[] est plus rapide. J'ai pas dit LA plus rapide (on doit pas en être loin quand même) mais c'est déjà bien mieux que ce que j'ai vu avant.
Merci à vous trois pour vos appréciations !
23 juin 2007 à 18:06
23 juin 2007 à 16:34
70 lignes de codes pour un résultat maximum
23 juin 2007 à 15:10
Je constate que cette source passe au dessus de beaucoup de tête ;)
Cette source s'adresse à tous ceux qui croient savoir utiliser Scanline correctement
Un ScanLine mal utilisé est au moins deux fois plus lent qu'un Get/SetDiBits
Mais utilisé comme Florenth nous le propose ici, ScanLine devient au moins deux fois plus rapide que
Get/SetDiBits
10/10
@+
Cirec