Tom's Hardware > Forum > Programmation > C / C++ / Java > [openGL] mon prog tourne plus vite si une autre appli est lancée

[openGL] mon prog tourne plus vite si une autre appli est lancée

Forum Programmation : C / C++ / Java - [openGL] mon prog tourne plus vite si une autre appli est lancée

Tomshardware : 1,4 millions d'inscrits dans 6 pays différents répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Je suis incapable de déterminer la source du problème. Il suffit que je lance mplayer pour voir mon programme s'exécuter cinq ou peut être dix fois plus rapidement.

Je n'ai trouvé aucune info jusqu'à présent. Ca arrivait également sur mon ancien ordinateur.

Merci d'avance.

Inscrivez-vous ou connectez-vous pour masquer ceci.

1) OS (mplayer existe sous windows) ?
2) toolkit ? (si un)
3) double buffer ?
4) glFlush ou glFinish ?

Répondre à batchy

Hello :)


Alors...

1. Win XP

2. rien, j'ai juste besoin d'afficher des images simples pour exploiter le résultat (à ce propos c'est bien les FBO ou PBO qui permettent de récupérer les textures de la mémoire vidéo?)

3 et 4: glFlush/swapbuffer
Je ne connais pas l'autre fonction... Je suppose que la première demande d'effectuer un rendu et que la deuxième signale à la carte qu'on souhaiterait passer au suivant?
hmmm je reprends espoir tout d'un coup :D

Je verrais ça demain, un gros merci dans tous les cas ;)
Bye.


Edit: petit essai, raté.
Au début ca tournait vite, mais mplayer était ouvert. Je l'ai fermé, ça continuait de même. J'ai fermé toutes les autres applis et finalement c'est redevenu très lent. :sweat:


Message édité par isneok le 20-06-2009 à 18:32:28
Répondre à isneok

Tu à forcement un toolkit. OpenGL ne sait rien faire seul, faut utiliser soit GLX, SDL, GLUT, GLFW, ou soit se coltiner les appels bas niveau de windows.

 

un FBO ça sert à rendre une scène dans un buffer interne qui peut ensuite être utilisé comme une texture, alors que un PDO ça sert à accélérer les transfert entre cg et cpu. à mon avis ce que tu veux c'est un PDO.

 

Et tant qu'a faire, poste le code de ton initialisation d'opengl et de ton toolkit ;)


Message édité par batchy le 21-06-2009 à 08:37:12
Répondre à batchy

Je reprends, from scratch, un prog commencé il y a deux ans mais suspendu car ma carte ne gérait pas ces fameux buffers, cruciaux pour le projet.
Le projet initial utilisait glut, pour sa gestion de police de caractère. Je suis retissant à utiliser ces librairies car elles prennent la main et, en ce qui me concerne, je n'aime pas ça du tout. En outre je ne comprends plus ce qui se passe.

Les deux ont le même soucis. En présence de certaines autres applis, le framerate s'envole, mais aussi la conso CPU.
Elle passe de 0 à 18%. Sur mon nouveau projet c'est 0 à 1 donc plus difficile à voir :)

Sur mon précédent ordinateur je pensais que le Sleep(1) était ignoré puisque la charge montait à 100%. Mais ce n'est pas ça, en en mettant un autre dès l'appel de la fonction Render() le framerate est divisé par deux.

Je ne poste pas mon Init() car franchement c'est le même genre qu'on peut voir dans tous les tutoriels, rien de spécial de ce côté là.
Je m'étonne de ne pas voir plus d'infos à ce sujet car ça doit être un problème très répandu. Je n'ai _jamais_rien_vu_ à ce sujet.

Répondre à isneok

Bon après avoir mené mon enquête je ne pense pas qu'openGL soit la cause directe de mon soucis.

Voici les benchs:

cas 1: mplayer est lancé (lis une video, mais en pause)
Sleep: 0 FPS 930 CPU 100%
Sleep: 1 FPS 480 CPU 0%
Sleep: 2 FPS 245 CPU 0%

cas 2: sans mplayer
Sleep: 0 FPS 940 CPU 100%
Sleep: 1 FPS 63 CPU 0%
Sleep: 2 FPS 31 CPU 0%


Tout se passe comme si certaines applications changeait la façon dont Windows gère les changement de contexte.
Je m'en souviens maintenant, c'est là dessus que j'avais buté il y a deux ans.

Des questions restent en suspens donc...
En utilisant ProcessExplorer, je vois que mon appli reçoit plus de contexte "grâce" à mplayer.
Elle consomme un poil plus de cpu s'il lit la vidéo... pour des performance en retrait (245 au lieu de 250 FPS)... Et ce uniquement si la fenêtre mplayer est sur l'écran (pour la conso CPU seulement, le FPS n'est pas impacté).
C'est vraiment n'imp...


Bon ça me fatigue tout ça.

Répondre à isneok

Ca y est.
La fonction Sleep() a une durée minimale qui varie (considérablement) et est la source de ces différences.
Le problème ne vient donc pas d'OpenGL. C'est rassurant... Le boulot que je vais avoir pour limiter mon appli de façon plus fiable l'est nettement moins :s

Répondre à isneok
Tom's Hardware > Forum > Programmation > C / C++ / Java > [openGL] mon prog tourne plus vite si une autre appli est lancée
Aller à :

Il y a 519 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
  • Besoin d'aide ? Publiez votre question
  • Publier
Publicité
Solution la plus récente
$_GET
Par Psy4tra il y a 2 jours :

Salut, merci de ta réponse mais le problème était complètement ailleurs !! En plus j'ai...

Les offres du moment
Ils ont gagné un badge
Vous pouvez les féliciter
Top experts