SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
12 déc. 2005 à 16:24
SnOOpss
Messages postés570Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013
-
13 déc. 2005 à 17:07
J'ai fais une petite DLL de graphisme 2D (vous aller me dire que c'est rudimentaire. Je le sais!). Elle n'utilise aucune fonction déja toute faite (sauf les fonctions des DLL de Windows bien sûre). Mais j'ai un problème écrasant. C'est lent. Très lent et sourtout quand il y a beaucoup de chose sur l'interface. J'utilise la fonction SetPixel en boucle pour afficher les pixels (bien sûre) mais lors que l'on grossie la fenetre ou que certaine superficie son grande, le nombre de FPS chut à 1 ou 2. En gros, j'aimerais savoir si vous connaissez une meilleur méthode pour afficher les pixels sans faire ramé l'ordinateur. Le codage général de la boucle d'affichage est:
while(LongeurTotal >= LongeurCourante)
{
(calcule des sinus cosinus et tous le reste)
...
SetPixel((hDC en mémoire), PositionX, PositionY, RGB(Rouge, Vert, Bleue));
...
}
avant il y a bien sur la création de l'interface:
CreateCompatibleBitmap(hBmp);
CreateCompatibleDC... ect.
et après il y a la supression des objets:
DeleteObject(hBmp);
DeleteDC((hDC en mémoire))... ect.
En gros dans un programme sa donne le résultat suivant:
switch(message)
{
case WM_PAINT:
g2dBeginPaint (la fonction qui créé l'interface)
g2dDrawLine (la fonction qui créé les pixels)
g2dEndPaint (la fonction qui supprime les objets)
break;
}
Sa aurais été plus simple de mêtre les sources sur internet mais je suis au j'ai pas internet chez moi et je parle des ordi du collège.
SnOOpss
Messages postés570Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 12 déc. 2005 à 17:53
Oui la fonction setpixel est horriblement lente fait plutot avec
BitBlt() et les compatibles bitmaps ou DIB regarde la source
http://www.cppfrance.com/code.aspx?id=23921 l'auteur fait une rotation
a une image sans passer par setpixel juste en travaillant avec des
pointeurs (le plus rapide)
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 12 déc. 2005 à 19:34
Oui mais BitBlt est fait pour afficher les pixel a l'écran non? C'est SetPixel qui les crées. Je ne peut pas juste utiliser BitBlt c'est pas fait pour créé des pixels ça non?
Vous n’avez pas trouvé la réponse que vous recherchez ?