performances SDL - C - Programmation
Marsh Posté le 25-07-2011 à 14:48:45
À mon avis tu n'as pas d'accelération matérielle, sur ma machine (XP, Core Duo 2Ghz, 5 ans d'age), j'ai du 400fps.
Marsh Posté le 25-07-2011 à 14:59:22
theshockwave a écrit : surface hardware, remplie en soft en pixel par pixel, ca doit être ca qui te pose souci |
Tu parles de l'effacement de la surface écran? Dans ce cas comment modifier cela?
En supprimant l'effacement cela ne change presque rien. Le moment difficile semble être le SDL_Flip. Pourtant je pensais qu'il ne s'agissait que d'un échange de buffers...
tpierron a écrit : À mon avis tu n'as pas d'accelération matérielle, sur ma machine (XP, Core Duo 2Ghz, 5 ans d'age), j'ai du 400fps. |
Mon accélaration matérielle fonctionne, au moins avec mes applis openGL. J'ai quelques milliers de fps avec fgl_glxgears.
J'ai d'autre projets, en openGL, qui affichent en 3D de nombreux objets et cela fonctionne très bien. Cela dit ça me fait peur ton message quand on sait que j'ai un quad core de seulement 2 ans. En rentrant je testerai le code sous windows pour vérifier cela.
Merci.
Marsh Posté le 25-07-2011 à 16:41:07
ptitchep a écrit : En rentrant je testerai le code sous windows pour vérifier cela. |
Ah tu n'es pas sous Windows? Sous Mac OS X, il me semble que SDL utilise aussi un truc avec rendu accéléré (la flemme de tester). Du temps où j'utilisais Linux, je me rapelle avoir eu des performances vraiment nulles. Mais bon, c'était il y a une paires d'années, ça me surprendrait que rien n'ai changé depuis...
Sous Windows, la SDL utilise Direct2D, que n'importe quelle carte graphique de ces 15 dernières années sait accélérer.
En tous les cas, pour un truc aussi simple (rendu de sprites 2D), même effectué avec le CPU, tu peux obtenir 60fps sans le moindre soucis (ie: CPU quasiment à plat).
Je me rappelle avoir porté fMSX 3.5.1 avec la SDL en utilisant le filtre hq2x + quelques overlay pour l'interface. Sur ma machine ça n'utilisait que 10% du CPU à 60fps (Windows donc).
Marsh Posté le 25-07-2011 à 16:45:08
J'veux pas jouer à kikalaplusgrosse, mais avec ton programme j'obtiens ça:
nb par seconde: 900
nb par seconde: 1980
nb par seconde: 1952
nb par seconde: 1887
nb par seconde: 1738
nb par seconde: 10107
nb par seconde: 10884
nb par seconde: 11015
nb par seconde: 10974
nb par seconde: 10404
nb par seconde: 10887
nb par seconde: 10953
nb par seconde: 11032
nb par seconde: 10923
nb par seconde: 10430
nb par seconde: 11021
nb par seconde: 10840
nb par seconde: 10753
nb par seconde: 10962
nb par seconde: 10217
10 000 FPS ça va ça commence à devenir confortable
Marsh Posté le 25-07-2011 à 17:21:46
WiiDS a écrit : J'veux pas jouer à kikalaplusgrosse, mais avec ton programme j'obtiens ça: |
Taille du pén... Spec du système? (notamment quel OS)
Edit: Arf, j'avais oublié le lien dans ton profil...
Processeur : Intel i5-2500k @ 4.6Ghz (46x100)
Mémoire vive : 8Go Corsair Vengeance DDR3 CL9 (CMZ8GX3M2A1866C9)
Carte graphique : nVidia Geforce GTX 570
Marsh Posté le 25-07-2011 à 18:30:58
Moi c'est:
Quad core Jenesaispluscb Ghz
4Go de Ram
ATI radeon 4870HD
Donc bon, pour afficher un écran noir...
Je suis toujours au taf donc je n'ai pas encore testé sous Windows.
Est-ce qu'il est possible que la 3D soit accélérée mais pas la 2D sous Linux?
Marsh Posté le 25-07-2011 à 19:23:08
Il me semble que la SDL ne gère pas du tout l'accélération
Marsh Posté le 25-07-2011 à 23:20:35
En fait je ne peux pas tester sous Windows.
Je n'ai rien pour compiler vu que Windows ne me sert à rien qu'à lancer quelques jeux.
WiiDs tu as quel OS?
Parce que si mon code (et quel code!) tourne à cette vitesse chez toi, je vais mettre le problème sur le dos de mon système et tourner la page.
Après tout, je ne faisais qu'un pacman pour m'occuper un week end de solitude et je ne le terminerai sans doute jamais (si si j'ai une vie d'habitude).
Merci pour vos réponses.
Marsh Posté le 26-07-2011 à 11:49:03
ptitchep a écrit : En fait je ne peux pas tester sous Windows. |
J'ai Windows 7 x64 mais je trouve quand même ton problème bizzare. Si tu obtiens d'excellentes performances avec glxgears c'est étrange que tu n'aies que 60fps, je vais tester avec une VM Archlinux pour voir si je peux reproduire ton problème
Sinon comme disait un intervenant plus haut, visiblement la SDL n'utilise en effet pas l'accélération matérielle. Non seulement je me coucherais moins con, mais j'ai également appris qu'il existe que la SFML elle utilise bel et bien l'accélération matérielle si ça t'intéresse, et porter ton code dessus ne devrait pas être trop compliqué
Marsh Posté le 26-07-2011 à 12:57:44
Bon bah sur Arch j'ai bien 1800+ FPS et encore je suis sur une VM Je miserais donc sur un problème de ton OS
Marsh Posté le 27-07-2011 à 17:18:45
C'est possible étant donné que c'est ma première Gentoo.
Il me manque pas mal de choses encore (mais pas l'accélération 3D).
De toute façon je vais devoir refaire mon système. Je verrai si quelque chose change.
J'ai aussi entendu parlé de SFML, je vais tester.
Marsh Posté le 28-07-2011 à 09:08:43
Utilise OpenGL
Code :
|
Sur ma machine (C2D@4.2G, NV9800GT, driver proprio), ça passe de +-800 à +-6000fps.
Marsh Posté le 28-07-2011 à 14:14:32
404 Not Found a écrit : Utilise OpenGL |
Et moi je chute a 5000fps, comme quoi
Marsh Posté le 02-08-2011 à 23:16:30
J'ai testé SFML.
Je n'ai pas mesuré mais les performances n'ont rien à voir.
Et c'est du C++.
Je n'ai testé ni le son ni openGL pour l'instant mais je sens que ça va me plaire.
Merci
Marsh Posté le 24-07-2011 à 23:06:26
Bonjour,
Mon week-end étant particulièrement palpitant, j'ai commencé à coder un pacman... pour le fun.
Ça fonctionne plutôt pas mal pour l'instant, à savoir que mon pacman peut se déplacer et manger les points. Les fantômes arriveront plus tard.
Le problème que j'ai concerne les perfs SDL.
J'ai un nombre d'images par secondes ridicule. Je me suis d'abord dit que j'avais fait n'importe quoi et j'ai cherché où mon programme passait le plus de temps.
Le résultat est que ce code:
fournit le résultat suivant:
./essai
nb par seconde: 65
nb par seconde: 64
nb par seconde: 65
nb par seconde: 65
nb par seconde: 65
nb par seconde: 65
J'ai d'abord pensé que SDL_Flip se synchronisait avec l'affichage de mon écran qui est de 60Hz (à 5 près pourquoi pas) mais la valeur augmente si je diminue la taille de ma surface ecran. Avec du 640x480, j'arrive à dépasser les 100 fps (Wahou!!!).
Que se passera-t-il si j'ajoute 200 sprites sur mon écran?
Qu'ai-je fait de mal pour avoir des performances aussi basses alors que je me contente d'afficher un écran noir?
Merci
---------------
deluser --remove-home ptitchep