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.
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 :(
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...
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 !
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.
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