vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
20 juin 2006 à 21:59
Choumoumou
Messages postés162Date d'inscriptionjeudi 30 septembre 2004StatutMembreDernière intervention17 novembre 2010
-
6 juil. 2007 à 23:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Choumoumou
Messages postés162Date d'inscriptionjeudi 30 septembre 2004StatutMembreDernière intervention17 novembre 2010 6 juil. 2007 à 23:06
excellent
(mais... 3 fps en 640x480 ! snif...)
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 9 nov. 2006 à 15:24
Oups,
pas j'attend mais j'atteins 40 FPS
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 9 nov. 2006 à 15:21
Aussi, pour avoir le taux réel de FPS que peut générer ta lib, je suggère d'enlever le Sleep(15) dans la fonction AppLoop de la démo. Ça plafonne les FPS à 33 tandi qu'en l'enlevant, j'attend 40 FPS.
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 8 nov. 2006 à 22:31
SAKingdom> Merci pour les info je vais tester ça. Desolé j'avais pas remarqué l'autre message. Merci encore.
@+
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 8 nov. 2006 à 19:13
Salut.
J'ai trouver quelque chose qui pourrait peut-être améliorer les FPS si ça t'interesse.
C'est simple, on se débarasse de StretchBlt. Mais comment redimentionner ?
Bien, j'ai rajouter une fonction dans ta librairie:
DLLEXPORT void __stdcall egResize (int width, int height)
{
mSrcCtrX = width / 2;
mSrcCtrY = height / 2;
mWidth width; mHeight height;
}
Tu l'aura deviné, ça sers à recentrer l'image. mWidth et mHeight sont des variables globales dans ton fichier EBArtGl.cpp.
J'ai donc refais la fonction blast:
DLLEXPORT void __stdcall egBlast(HDC hDC)
{
if (mInit == false) return;
//Copie le DC
BitBlt(hDC, 0, 0, mWidth, mHeight, mhDC, 0, 0, SRCCOPY);
}
Et j'ai modifier, dans le démo, AppCycle en changent l'appele de blast et en rajoutant ma fonction:
GetClientRect(hWnd,&Rc);
egResize(Rc.right, Rc.bottom);
hDC = GetDC(hWnd);
egBlast(hDC);
J'ai testé et, pour moi, ça fonctionne. Ça m'a fais passer de 20 fps à 33 fps (variable) en release.
Je me suis rendue compte de cela en fesant ma propre lib graphique 3D. Ça marche pour la mienne, pour la tienne aussi (chez moi) mais j'ai peut-être pas fais attention à quelque chose alors si ça ne peut pas fonctionner pour X raison, désolé de t'avoir fais perdre ton temps. Sinon, au plaisir de t'aider ;)
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 24 juin 2006 à 05:40
Woaw c'est très bien mais j'ai noter que le programme gelait pendant une certaine periode de temps quand une autre fenetre passait par dessus. Aussi, comment procède-tu pour afficher les pixels à l'écran? Tu utilise les fonctions de la GDI ou tu as tes propre fonctions. Je dois avouer que je suis un peu perdue.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 20 juin 2006 à 22:59
Merci
Je suis à 33 images/sec si ca t'intéresse
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 20 juin 2006 à 22:35
6 juil. 2007 à 23:06
(mais... 3 fps en 640x480 ! snif...)
9 nov. 2006 à 15:24
pas j'attend mais j'atteins 40 FPS
9 nov. 2006 à 15:21
8 nov. 2006 à 22:31
@+
8 nov. 2006 à 19:13
J'ai trouver quelque chose qui pourrait peut-être améliorer les FPS si ça t'interesse.
C'est simple, on se débarasse de StretchBlt. Mais comment redimentionner ?
Bien, j'ai rajouter une fonction dans ta librairie:
DLLEXPORT void __stdcall egResize (int width, int height)
{
mSrcCtrX = width / 2;
mSrcCtrY = height / 2;
mWidth width; mHeight height;
}
Tu l'aura deviné, ça sers à recentrer l'image. mWidth et mHeight sont des variables globales dans ton fichier EBArtGl.cpp.
J'ai donc refais la fonction blast:
DLLEXPORT void __stdcall egBlast(HDC hDC)
{
if (mInit == false) return;
//Copie le DC
BitBlt(hDC, 0, 0, mWidth, mHeight, mhDC, 0, 0, SRCCOPY);
}
Et j'ai modifier, dans le démo, AppCycle en changent l'appele de blast et en rajoutant ma fonction:
GetClientRect(hWnd,&Rc);
egResize(Rc.right, Rc.bottom);
hDC = GetDC(hWnd);
egBlast(hDC);
J'ai testé et, pour moi, ça fonctionne. Ça m'a fais passer de 20 fps à 33 fps (variable) en release.
Je me suis rendue compte de cela en fesant ma propre lib graphique 3D. Ça marche pour la mienne, pour la tienne aussi (chez moi) mais j'ai peut-être pas fais attention à quelque chose alors si ça ne peut pas fonctionner pour X raison, désolé de t'avoir fais perdre ton temps. Sinon, au plaisir de t'aider ;)
24 juin 2006 à 05:40
20 juin 2006 à 22:59
Je suis à 33 images/sec si ca t'intéresse
20 juin 2006 à 22:35
http://ebartcodes.info/temp/moteur%203d.zip
@+
20 juin 2006 à 21:59