2 votes

Existe-t-il un moyen de réduire la charge du CPU et du GPU dans mon simple jeu 2D DirectX ?

Je suppose que j'ai des explications à donner :

  • Je suis assez novice en matière de programmation de jeux, alors ne vous fâchez pas si je ne comprends pas un concept immédiatement.
  • Le jeu utilise DirectX 10 et est écrit en C++.
  • C'est un jeu en 2D très simple

La situation : Bien qu'il soit très simple, tant au niveau de la logique du jeu qu'au niveau des graphismes, il charge mon processeur et mon GPU à 100%. Même le menu s'affiche avec plus de 2000 images par seconde.

Mi Le problème n'est pas que le jeu est trop rapide. J'ai déjà chronométré les animations des sprites et la logique du jeu en utilisant la fonction QueryPerformanceCounter.

Le site problème réel est que le jeu calcule le même code de nombreuses fois sans que rien ne se passe à l'écran, ce qui fait peser une charge énorme sur mon matériel.

De quelle manière puis-je diminuer la charge matérielle de mon jeu ? J'ai l'impression qu'utiliser Sleep, c'est "tricher".

2voto

user1437050 Points 41

Merci à Damon de m'avoir aiguillé dans la bonne direction, j'ai regardé dans la fonction actuelle. ( http://msdn.microsoft.com/en-us/library/Windows/desktop/bb174576(v=vs.85).aspx )

Pour résoudre les problèmes de charge du CPU et du GPU, il a suffi de modifier les paramètres suivants

swapChain->Present(0, 0);

à

swapChain->Present(1, 0);

0voto

tobsen Points 3776

Juste une petite suggestion :

Chaque fois que vous entrez dans la boucle de jeu, le temps écoulé depuis la dernière entrée est calculé. Si ce temps est inférieur à un seuil donné, le jeu revient sans rien traiter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X