IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Une info pour ceux qui font du graphisme pointu


Sujet :

Lazarus Pascal

  1. #1
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut Une info pour ceux qui font du graphisme pointu
    Bonsoir,

    une fois n'est pas coutume, je ne viens pas pleurer demander de l'aide crier au secours, non, je viens vous passer un lien sur un petit projet qui m'a semblé sympathique et qui a compilé instantanément sans aucune retouche, et rien que pour ça, je suis aux anges.
    La chose est décrite comme capable d'accélérer le rendu des graphismes, serait compatible Linux, Windows, Mac, et avec un soupçon d'OpenGL.

    Ce projet est discuté là (ah ben vi, tout en english mais c'est pas trop compliqué et c'est vite lu), quand vous avez fini de lire vous remontez tout en haut il y a un lien "next" à droite qui vous emmènera vers la 2e partie, puis deux fois "next" pour atteindre la 3e et dernière partie où se trouve un lien github pour récupérer un zip.

    Il y a un benchmark et j'arrive à 40 fps (env. 24 msec) sur ma vieille machine qui n'a pas une carte graphique de gamer ; est-ce que c'est bien ? Est-ce que c'est mal ? Testez puis revenez et comparez.

    Enjoy,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut, le graphisme j'aime bien donc allons voir ce que Jipete nous a trouvé !!! je clone les sources, parfait, je lance Lazarus (pas trop fort au cas ou) j'ouvre les differents projets ok pas soucis et je fini par le projet GridInQuestII et la PAF

    Error: resource compiler "windres.exe" not found, switching to external mode
    Bon c'est quoi ce machin "WindRes" ? ok petite recherche sur le forum de FPC

    windres is part of fpc (and should be located inside its platform dependent directory), in my particular Free pascal specific case: G:\WinDev\FPC\3.0.0\bin\i386-win32\windres.exe
    ...
    I've just searched the entire C: drive and have found two of these windres files. One is called i386-win32-windres and it is located in C:\lazarus\fpc\3.0.0\bin\x86_64-win64 and the other is called windres and it is located in C:\Program Files (x86)\CodeBlocks\MinGW\bin.
    Bon ok je recherche ce bidule dans C:\lazarus\fpc\3.0.0\bin\x86_64-win64 (ben vi je suis sous W10 64bit) et la quenini, walou, que dalle.
    Je persiste, me met a la base ("c:\lazarus") lance une recherche *wind*.* seul truc que je trouve c'est : windres-2.2.2.patch ok c'est un patch pour FPC 2.2 bref le truc qui sert à rien vu que c'est FPC 3.0.0

    Bon alors il est ou ce fichier windres dans Lazarus 1.6 avec FPC 3.0.0 de la date du 06/11/2016 SVN Revision 51630 ???????


    Bon je vais pas me laisser 3mx4$f0 par ce fichier, je continue ma lecture du forum de FPC et je lis :

    In case you install the 64-bit version of lazarus and want to cross-compile 32 bit windows you'd also need to install this file here
    https://sourceforge.net/projects/laz...in32-win64.exe
    Ok j'installe le bignou, et avant de compiler je refais une petite recherche je le trouve bien C:\lazarus\fpc\3.0.0\bin\x86_64-win64 et sous le nom "i386-win32-windres.exe" (y'en une dizaine de fichiers comme ça) pffff pourquoi faire simple quand on peux faire compliquer hein les petits gars de FPC ? ils aiment ça on dirait !

    bref un renommage en bonne et due forme, je recompile et

    Warning: windres: preprocessing failed.
    Splash.pas(140,1) Error: Error while compiling resources -> Compile with -vd for more details. Check for duplicates.
    ok je rajoute le -vd dans les options je recompile pas plus de details, elle sert à rien cette options Vérifier quelles duplications ???

    Bon je vais dans les options du projet et je passe en "Release 32Bit" vous devinerez jamais et bien rebaffe

    Désolé Jipete mais je pourrais pas comparer. Si quelqu'un à l'astuce au cas ou je suis preneur. peut-être Gille ?

    Mise à part
    You know what? I'm just getting back to the previous version.

    I don't have the time or the patience to fix these problems. I just want to install and use it, as I always did since the first version. Maybe in future releases, these bugs might be fixed.

    Thank you all for your kindness and help.
    Bonne soirée

    PS : J'ai téléchargé l'exe du projet (win64) et celui-ci ne se lance pas (aussi) chez moi
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Bonsoir,

    Citation Envoyé par BeanzMaster Voir le message
    et je finis par le projet GridInQuestII et là PAF
    Je ne vois pas le rapport entre ce GridInQuestII et le projet "Free Pascal Fast Bitmaps" dont j'ai parlé

    Je ne pourrai donc pas t'aider sur ce coup-là, d'autant plus qu'il me semble que tu tournes sous Window (sans "s", il parait, à partir de 10...)

    (En ce qui me concerne,je voulais jeter un coup d'œil à son projet Mandelbrot mais lui aussi ne compile pas, peut-être à cause d'un mic-mac de versions de fichiers -- j'envisage de le contacter demain)
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut

    Je ne vois pas le rapport entre ce GridInQuestII et le projet "Free Pascal Fast Bitmaps" dont j'ai parlé
    ....
    quand vous avez fini de lire vous remontez tout en haut il y a un lien "next" à droite qui vous emmènera vers la 2e partie, puis deux fois "next" pour atteindre la 3e et dernière partie où se trouve un lien github pour récupérer un zip.
    je tombe la dessus http://michellcomputing.co.uk/blog/2...aunched-today/ en bas le lien https://bitbucket.org/PaulFMichell/gridinquestii apres 2 "next" pfff faut encore faire 2 fois next apres je tombe sur la partie 3 de l'article sur "fast-bitmap" apres le mandelbrot que tu parle chelou je deteste "wordpress"

    pour ceux qui on la flemme de lire : https://bitbucket.org/PaulFMichell/c...ages/downloads et https://bitbucket.org/PaulFMichell/mandelbrot/downloads
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    chelou je deteste "wordpress"
    Sinon, pour cette histoire de "duplicate resource", ça me disait quelque chose et ça m'est revenu : c'est une histoire tordue entre les .lrs et les .rc, je ne me souviens pas comment je m'en suis sorti, peut-être en commentant toutes les lignes où ces extensions sont présentes puis en réactivant soit les .lrs soit les .rc, je ne sais plus trop mais c'est par là.

    Bonne découverte, mais en ce qui me concerne, j'ai du mal à mettre ça en œuvre, tous comptes faits...

    EDIT : Mandelbrot ne compile pas chez moi, sous Linux comme sous XP le tout en 32 bits (mais je ne pense pas que ça ait une incidence)
    Hier j'ai dit que je lui écrirais (concernant ce problème) mais ça n'est pas la peine, le problème est dans mon camp...
    Dans son code il utilise les propriétés .Width, .Height et .CenterPoint du TRect, indisponibles actuellement. /EDIT
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Hier j'ai dit que je lui écrirais (concernant ce problème) mais ça n'est pas la peine, le problème est dans mon camp...
    Dans son code il utilise les propriétés .Width, .Height et .CenterPoint du TRect, indisponibles actuellement
    Je m'en suis sorti, en me souvenant que sur son blog il parle d'un Lazarus 1.7 !
    Doit y avoir des choses pour lesquelles on n'est pas au courant.

    Bref, voilà les corrections pour le projet MandelBrot, et attention aux options du projet, où il a forcé Win64.
    Dans le fichier Generators.pas :
    ligne 148
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Procedure TGeneratorController.BoxZoom(ZoomRect: TRect);
    Var
      ZoomCenter: TRealPoint;
      ViewCenter: TRealPoint;
      ScaleX: Double;
      ScaleY: Double;
    Begin
    //  ZoomCenter := PointToRealPoint(ZoomRect.CenterPoint);
      ZoomCenter := PointToRealPoint(CenterPoint(ZoomRect));
      { Zoom centre must be calculated prior to scale. }
    //  ScaleX := ZoomRect.Width/OutputRectangle.Width;
      ScaleX := (ZoomRect.Right-ZoomRect.Left)/(OutputRectangle.Right-OutputRectangle.Left);
    //  ScaleY := ZoomRect.Height/OutputRectangle.Height;
      ScaleY := (ZoomRect.Bottom-ZoomRect.Top)/(OutputRectangle.Bottom-OutputRectangle.Top);
      If ScaleX>ScaleY Then
        VS := VS*ScaleX
      Else
        VS := VS*ScaleY;
    //  ViewCenter := PointToRealPoint(OutputRectangle.CenterPoint);
      ViewCenter := PointToRealPoint(CenterPoint(OutputRectangle));
      VR := VR-ViewCenter.R+ZoomCenter.R;
      VI := VI-ViewCenter.I+ZoomCenter.I;
      UpdateImage;
    End;
    Faudra peut-être rajouter un "-1" aux soustractions, flemme de tester plus précisément.

    Et tout en bas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Procedure TGeneratorController.SetOutputRectangle(Value: TRect);
    Begin
      FOutputRectangle := Value;
    //  FPanStep := FOutputRectangle.Width Div 5;
      FPanStep := (FOutputRectangle.Right-FOutputRectangle.Left) Div 5;
    Des surprises à venir avec la prochaine version, donc, car dans son programme le menu Edit propose une option Copy (sous-entendu l'image dans le presse-papiers) et à l'heure actuelle, que ça soit sous Linux ou sous XP, je gagne Cannot assign a TCompactImage to a TClipboard.
    Vivement la 1.8
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 844
    Points : 11 274
    Points
    11 274
    Billets dans le blog
    6
    Par défaut
    A voir s'il n'existe pas un truc style RegisterClipBoardFormat
    Delphi 5 Pro - Delphi 10.4 Rio Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    A voir s'il n'existe pas un truc style RegisterClipBoardFormat
    Rien trouvé

    Mais il y a des trucs qui compensent : je vous invite à sélectionner des zones à la souris sur l'image en tenant Shift appuyé !

    Nom : bientôtnoël.png
Affichages : 716
Taille : 607,6 Ko

    C'est bientôt l'hiver, cette année les flocons sont bizarres
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #9
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Bref, voilà les corrections pour le projet MandelBrot, et attention aux options du projet, où il a forcé Win64.
    Dans le fichier Generators.pas :
    Trop drôle ai fait les même modifs avant de venir ici

    Sinon pour le benchmark

    Ma config :
    Processeur : AMD A10-7870K, RADEON 7,12 Compute Core 4C+8G 3.90Ghz
    RAM : 16Go
    Carte Graphique : NVidia GT 740 1Go (vivement noêl que je me paye une GTX 1080 )
    Resolution : 1080p, 1920x1080
    OS : Windows 10

    En mode normal
    Average Draw Time 7.75ms (129.03 fps)
    Avec OpenGL :
    Average Draw Time 16,54ms (60 fps)

    ici avec l'opengl on depassera pas les 60fps et c'est normal.

    Faudrais tester avec un "TBitmap.RawImage.Data" histoire de voir si il y une difference.

    Pour Mandelbrot
    Mode de generation et affichage normal
    - Single ~355ms et display 3ms
    - Double ~335ms et display 3ms
    - SSE ~545ms et display 3ms

    Mode de generation et affichage OpenGL
    - Single ~354ms et display 6ms
    - Double ~343ms et display 4ms
    - SSE ~554ms et display 4ms

    Citation Envoyé par Jipété Voir le message
    Sinon, pour cette histoire de "duplicate resource", ça me disait quelque chose et ça m'est revenu : c'est une histoire tordue entre les .lrs et les .rc, je ne me souviens pas comment je m'en suis sorti, peut-être en commentant toutes les lignes où ces extensions sont présentes puis en réactivant soit les .lrs soit les .rc, je ne sais plus trop mais c'est par là.
    Ok merci je rechercherai par la dès que j'aurai un peu plus de temps libre.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  10. #10
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    En mode normal
    Average Draw Time 7.75ms (129.03 fps)

    Pour Mandelbrot
    Mode de generation et affichage normal
    - Single ~355ms et display 3ms
    Oh lala j'ai honte ! J'ai une vieille Radeon 710, et ça donne
    en haut : 22 ms et 45 fps
    en bas : 683 ms et 43 ms, une horreur...

    Citation Envoyé par BeanzMaster Voir le message
    Faudrait tester avec un "TBitmap.RawImage.Data" histoire de voir si il y a une différence.
    Tu n'aurais pas un exemple, stp ?, vu que je n'ai jamais travaillé de cette manière.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  11. #11
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Tu n'aurais pas un exemple, stp ?, vu que je n'ai jamais travaillé de cette manière.
    Si ici et la 2 de tes posts tu l'as deja utilisé via RawImage.getLineStart(y)sinon un autre petit code sur git sauf qui faut faire comme sur le 1er liens pour le 32Bits TRGBQuadArray à la place de TRGBTripleArray et y'a également un petit sujet sur le wiki

    Bref voila son test s'appuie uniquement sur la fonction Clear et TextRect via le TextFont faudrait créer un test du genre on dessine 100 000 pixels de couleurs et positions aléatoires pour vérifier quel est le mode d'acces le plus rapide. Je pense que cela serai plus juste pour "Benchmarker"

    Citation Envoyé par Jipété Voir le message
    Oh lala j'ai honte ! J'ai une vieille Radeon 710, et ça donne
    en haut : 22 ms et 45 fps
    en bas : 683 ms et 43 ms, une horreur...
    Avec mon ancien PC j'aurais surement eu des résultat quasi identique
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  12. #12
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Si ici et la 2 de tes posts tu l'as deja utilisé via RawImage.getLineStart(y)sinon un autre petit code sur git sauf qui faut faire comme sur le 1er liens pour le 32Bits TRGBQuadArray à la place de TRGBTripleArray et y'a également un petit sujet sur le wiki
    lol ! J'avais oublié tout ça, ces discussions épiques à propos de Scanline, etc.

    Bon, j'ai un peu fouillé le web, ce soir, j'ai trouvé deux-trois trucs à creuser, et particulièrement un outil (pas très jeune) qui sort des résultats comparatifs et où on peut lire que l'accès en Raw est une tuerie en termes de perfs, comparé aux autres mais le combat est tendu avec TBGRABitmap, je veux parler de GraphicTest.

    Il faudrait peut-être réfléchir à intégrer dans ce GraphicTest les moyens d'y faire fonctionner les outils de Mitchell, encore que, s'il s'appuie sur l'accès par des pointeurs de pixels, il va avoir les mêmes résultats que le RawImage natif dans le GraphicTest.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  13. #13
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Il faudrait peut-être réfléchir à intégrer dans ce GraphicTest les moyens d'y faire fonctionner les outils de Mitchell, encore que, s'il s'appuie sur l'accès par des pointeurs de pixels, il va avoir les mêmes résultats que le RawImage natif dans le GraphicTest.
    J'avais un peu de temps cet apres midi alors voila une 1ere méthode avec les composants de Mitchell (on peux faire encore de 2 autres manières, si je ne me trompe pas) :
    Etape 1 : Copier les fichiers Defines.inc, CompImages.pas et LCLCompImages.pas de Mitchell dans le dossier de graphictest et les ajouter au projet, sauf le inc
    Etape 2 : Dans le dossier methods de GraphicTest créer une nouvelle unité UCompImage.pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    unit UCompImage;
     
    {$mode delphi}
     
    interface
     
    uses
      Classes, SysUtils, UDrawMethod, UFastBitmap, Graphics, GraphType, Controls, CompImages, LCLCompImages;
     
    type
      { TBitmapRawImageData }
     
      TCompImage = class(TDrawMethodImage)
        TempImage: TCompactImage;
        TempLCLImage: TLCLCompactImage;
        constructor Create; override;
        destructor Destroy; override;
        procedure Init(Parent: TWinControl; Size: TPoint; PixelFormat: TPixelFormat); override;
        procedure DrawFrame(FastBitmap: TFastBitmap); override;
      end;
     
     
    implementation
     
    { TBitmapRawImageData }
     
    constructor  TCompImage.Create;
    begin
      inherited;
     
      Caption := 'TComp.Image';
      Description.Add('Custom TFastBitmap data are converted to visible Comp image bitmap. ' +
        'Then Canvas is responsible for show loaded data.');
    end;
     
    procedure TCompImage.Init(Parent: TWinControl; Size: TPoint; PixelFormat: TPixelFormat);
    begin
      inherited;
      TempImage := TCompactImage.Create(Size.X, Size.Y);
      TempLCLImage := TLCLCompactImage.Create(TempImage);
      //TempBitmap.PixelFormat := PixelFormat;
     
    end;
     
    // 1ere Methode
    procedure  TCompImage.DrawFrame(FastBitmap: TFastBitmap);
    var
      Y, X: Integer;
    begin
        with FastBitmap do
        begin
        for X := 0 to Size.X - 1 do
          for Y := 0 to Size.Y - 1 do
            TempImage.Colors[X, Y] := TColorToFPColor(SwapBRComponent(Pixels[X, Y]));
        end;
        // TempLCLImage.DrawTo(Image.Canvas); ----> Ca ne fonctionne pas
        // donc 1ere methode de transfert mais piouf que c'est long !!!!!
        Image.Picture.Bitmap.Assign(TempLCLImage.ImageBitmap); 
     
    end;
     
    destructor TCompImage.Destroy;
    begin
      TempImage.Free;
      TempLCLImage.Free;
      inherited Destroy;
    end;
     
     
    end.
    Etape 3 : Dans le fichier UMainForm.pas de GraphicTest
    a) Rajouter UCompImage dans le uses de la partie implementation
    b) Dans la procedure TMainForm.RegisterDrawMethods; ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RegisterDrawMethod(TCompImage);
    Voila je pense que je n'ai rien oublié. Et un petit screen du résultat de GraphicTest sur ma machine avec une resolution de 1920x1080

    Nom : graphictest1.jpg
Affichages : 823
Taille : 93,7 Ko

    Je ferai les autres méthodes des que je pourrais.

    Bon tests
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  14. #14
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Bonsoir,

    Bravo : c'est un peu à ça que je pensais, pour mixer les deux mondes !
    Merci de l'avoir fait (un peu tendu pour moi, le mardi aprème).

    Le problème, c'est quand on regarde tes résultats, et particulièrement les lignes de TBitmap.RawImage.Data :
    Citation Envoyé par BeanzMaster Voir le message
    Et un petit screen du résultat de GraphicTest sur ma machine avec une resolution de 1920x1080

    Nom : graphictest1.jpg
Affichages : 823
Taille : 93,7 Ko
    Je rêve ou c'est une vraie catastrophe son fast bitmap ?

    Bon, je verrai ça un peu plus tard, là j'ai un autre chantier sur le gaz...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  15. #15
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Bon cet aprem j'ai fais ça à l'arrache en 30 minutes, je suis pas allez au bout des choses alors voila une petite mise à jour (tu va être content Jipete )
    J'ai créé 4 methodes avec les composants de Mitchell tout est dans le screen qui suit :

    Nom : graphictest2.jpg
Affichages : 610
Taille : 97,7 Ko

    et voila également le zip avec le projet (sans les package BGRABitmap et GR32, c'est trop volumineux et ca passe pas), on pourrais également faire une méthode supplémentaire en se basant sur "UBitmapRawImageData.pas"
    graphictest.zip

    On pourrais encore augmenter la vitesse, au lieux d'utiliser le TFastBitmap qui est dans "UFastBitmap.pas" on pourrait se servir de TCompactImage de l'unit "CompImages.pas" on supprimerait ainsi le "move" ou la boucle "for x for y", regardes les 2 units sont tres similaires

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  16. #16
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Bon cet aprem j'ai fait ça à l'arrache en 30 minutes, je suis pas allé au bout des choses alors voila une petite mise à jour (tu vas être content Jipete )
    Rhôôô la méthode 4 elle déchire sa race ! Bravo Beanz, ça c'est du boulot !
    Par contre, je ne comprends pas trop les résultats de RawImage.Data Move et particulièrement la 3e colonne, quand on compare avec Method 4.

    J'étudie ça demain, là il est pas d'heure, mais je ne pouvais pas résister à cette belle surprise que tu nous fais

    Mais en plus je sens venir une autre version, dans tes propos ? Quand tu auras atteint le bout des choses ? Waouh ! Vivement la suite...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  17. #17
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Bonjour,

    Je suis parti de ton .zip, il a fallu que je rajoute ça dans UMainForm et dans le .lpr : {$IFDEF GRAPHICS32}UGraphics32Method,{$ENDIF} + un clic droit / Supprimer sur la ligne concernée dans Projet / Inspecteur de projet mais bon, on y arrive...

    Ensuite, comme je voulais me concentrer sur les méthodes les plus performantes, j'ai commenté plein de lignes dans procedure TMainForm.RegisterDrawMethods; et il en sort ça, en choisissant pf24bit à l'option PixelFormat tout en bas :

    Nom : 4methodes.png
Affichages : 717
Taille : 40,2 Ko

    Si quelqu'un pouvait m'expliquer l'incohérence (pour moi) de ce 9xxx dans la 3e ligne de la 3e colonne, parce que je ne me l'explique pas...
    Si ce n'était ce point, la Method 4 du TComp.Image remporterait le pompon, mais là, je reste perplexe (et je ne suis pas du tout spécialiste des FPS et autres benchmarcks...)
    Pi d'abord, qu'est-ce que ça signifie exactement, "Draw FPS" ?

    Merci,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  18. #18
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Bonsoir,
    Citation Envoyé par Jipété Voir le message

    Si quelqu'un pouvait m'expliquer l'incohérence (pour moi) de ce 9xxx dans la 3e ligne de la 3e colonne, parce que je ne me l'explique pas...
    Si ce n'était ce point, la Method 4 du TComp.Image remporterait le pompon, mais là, je reste perplexe (et je ne suis pas du tout spécialiste des FPS et autres benchmarcks...)
    Pi d'abord, qu'est-ce que ça signifie exactement, "Draw FPS" ?

    Merci,
    Bon alors je t'explique le Draw FPS c'est le temps moyen que met la procedure DrawFrame pour copier les données du FastBitmap vers le TImage donc 1 seule image, le FPS la 1ere colonne c'est l'estimation de la totalité de l'animation.

    Il faut surtout garder en tête la 1ere colonne. sur ce j'ai fais les modifs que je parlais dans mon post. A savoir utiliser TCompactImage à la place de TFastBitmap les résultats, sont inégaux des fois c'est le DataRawMove qui l'emporte et parfois la methode 5 pour le "Draw FPS" et "FPS" , mais le plus souvent c'est la methode 5 qui l'emporte (du moins chez moi). Il n'y a pas une grande différence entre les 2. Tout du moins cela depend de comment on assigne les couleurs dans notre buffer. A ce propos j'ai quelques soucis de conversion car :
    - le FastBitmap original code les couleurs en 32bits format RGBA (si je ne me trompe pas) via un LongWord (cardinal) .
    - Le TCompactImage utilise pour assigner les pixels TFPColor qui lui est sur 64bit via Colors[x,y]
    - Le TCompactImage utilise entre 2 une donnée de TCompactColor (record) sur 32bits
    Du coup je me perd dans les conversions de couleur d'un format à l'autre, et je me mélange les pédales avec les déplacements de bits avec ShR et ShL, j'avoue je suis perdu sur ce coup, et l'affichage est incorrect.

    Sinon au regard du FPS Glabal c'est la methode 4 qui l'emporte haut la main ici

    Malgré ça le test reste viable à mon avis, juste ce problemes avec les couleurs, à régler

    voila un screen des resultats et en dessous le zip du projet

    Nom : graphictest3.jpg
Affichages : 617
Taille : 54,6 Ko

    graphictestCompactImage.zip
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  19. #19
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Merci pour les explications, le retour, les tests, le zip, toussa toussa, je verrai ça demain, car là maintenant je commence à en avoir un peu franchement marre, entre les màj moisies et une nouvelle galère pas piquée des vers, c'est bon, là, au pieu !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  20. #20
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Du coup je me perd dans les conversions de couleur d'un format à l'autre, et je me mélange les pédales avec les déplacements de bits avec ShR et ShL, j'avoue je suis perdu sur ce coup, et l'affichage est incorrect.
    Ben en fait non mon code est bon, le problème c'est au niveau du PixelFormat


    J'ai juste modifié dans la procedure RandomImage dans compimage pour avoir un dégradé Gris au lieu de rouge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    acolor:=(Trunc(Sin((X + Trunc(Index / Count * Width)) mod Width / Width * pi) * 255)) and $ffffff ;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var tmp:integer;
    ...
    tmp:=(Trunc(Sin((X + Trunc(Index / Count * Width)) mod Width / Width * pi) * 255)) ;
    acolor := (tmp or (tmp shl 16) or (tmp shl 8)) and $ffffff;
    en 24bits seule la méthode "TBitmap.RawImage.Data" fonctionne correctement et la méthode 4 y'a un soucis mais je sais pas pourquoi le dégradé gris ne s'affiche par correctement:
    - 1) resultats de tous les test
    Nom : graphictest4.jpg
Affichages : 644
Taille : 116,8 Ko

    - 2) affichages :

    Nom : graphictest4a.jpg
Affichages : 589
Taille : 94,6 Ko

    --> Pour la methode 5 c'est pareil que l'image ci-dessous
    Nom : graphictest4c.jpg
Affichages : 575
Taille : 127,0 Ko

    Nom : graphictest4b.jpg
Affichages : 666
Taille : 94,9 Ko

    - 3)
    voila le résultat de tous les tests en forçant l'affichage en 32bits et là pas de soucis, mais les FPS fondent a vu d'oeil
    Nom : graphictest4d.jpg
Affichages : 638
Taille : 90,4 Ko

    La methode 5 reste plus rapide que "TBitmap.RawImage.Data.Move" de pas grand chose
    La methode 4 elle envoie du lourd à tous les coups

    Juste pour le fun le test avec une resolution de 1920x1080 c'est kikif les 3 methodes sont aux coudes à coudes
    Nom : graphictest4e.jpg
Affichages : 680
Taille : 54,8 Ko
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/01/2006, 14h44
  2. IIS + Apache + mysql...pour ceux qui ont déjà installé
    Par ludophil dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 15/10/2005, 03h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo