OpenGL : GROS problème

OpenGL : GROS problème - C++ - Programmation

Marsh Posté le 02-03-2003 à 21:48:27    

j'utilise des textures 8bits (soit 256 coul), dans mon code que j'initialise
l'affichage en 16 ou 32 bits, je me retrouve confronté à un problème que je
n'arrive pas à résoudre :
 
Quand mon bureau est en 16 bits : je tourne au mieux à 5 fps...
Quand mon bureau est en 32 bits : je dépasse les 25 ... (et certaines
personnes avec de grosses config dépassent même les 200 fps)
 
Ce qui va à l'encontre de toute logique !

Reply

Marsh Posté le 02-03-2003 à 21:48:27   

Reply

Marsh Posté le 02-03-2003 à 21:50:56    

Reply

Marsh Posté le 02-03-2003 à 21:54:48    

Si t'as vraiment rien d'autre à fouttre, je te conseille d'apprendre à programmer, de te renseigner sur OpenGL et de répondre à ma question.
 
Là, ta présence ici aura peut être un sens ...

Reply

Marsh Posté le 02-03-2003 à 21:56:42    

Je connais OpenGL, je connais C++ et je m'indigne de voir que tu te permets plusieurs posts pour une seule et meme question, pour ton pauvre nombril esseule.
 
Donc je m'insurge.
 
Et comme ton attitude ne merite pas d'aide d'aucune maniere, comme je connais la reponse mais que tu ne merites pas selon moi que l'on t'aide, je fermerai ma gueule.
 
Dommage pour ti :hello:

Reply

Marsh Posté le 02-03-2003 à 22:04:00    

Super comme point de vue.
 
En même temps la réponse, pour peu que tu la connaisses, tu as bien dû la trouver quelquepart .... tu n'est pas indispensable, je pense.
 
A bon entendeur ...
 
 
"Y'a pas de bon ou de mauvais forummeurs, y'a juste des forummeurs..."

Reply

Marsh Posté le 02-03-2003 à 22:07:02    

Kyle_Katarn a écrit :

Super comme point de vue.
 
En même temps la réponse, pour peu que tu la connaisses, tu as bien dû la trouver quelquepart .... tu n'est pas indispensable, je pense.
 
A bon entendeur ...
 
 
"Y'a pas de bon ou de mauvais forummeurs, y'a juste des forummeurs..."


 
Oui, je l'ai trouvee en rencontrant le meme pb et en branchant mon cerveau !
 
Ce que tu m'as l'air incapable de faire, assurement.
 
Et vu que tu te prends pour quelqu'un sorti de la cuisse de jupiter, bah, demerdes toi pour trouver la raison tout seul.


Message édité par Tetedeiench le 02-03-2003 à 22:07:22
Reply

Marsh Posté le 02-03-2003 à 22:07:54    


 
T'as vraiment rien compris toi [:mlc]

Reply

Marsh Posté le 02-03-2003 à 23:25:28    

Visiblement c'est un forummeur "de poids".
 
Mais plus au sens "boulet" qu'au sens "influent" du terme ...

Reply

Marsh Posté le 03-03-2003 à 09:27:27    

le iench > il est ou le crosspost ? un crosspost pour moi est une question posée sur différentes sections. Or ici, Kyle demande juste à un maximum de personnes de tester son logiciel ! Je vois pas ou est le mal...
 
Merci de rester poli...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-03-2003 à 09:35:39    

Harkonnen a écrit :

le iench > il est ou le crosspost ? un crosspost pour moi est une question posée sur différentes sections. Or ici, Kyle demande juste à un maximum de personnes de tester son logiciel ! Je vois pas ou est le mal...
 
Merci de rester poli...


ici:
http://forum.hardware.fr/forum2.ph [...] cat=10&p=1
 

Kyle_Katarn a écrit :

ok
 
Et si tu passe la profondeur des couleurs du bureau de 16 à 32 ou de 32 à 16 t'as pas de probs de FPS ?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 03-03-2003 à 09:35:39   

Reply

Marsh Posté le 03-03-2003 à 09:53:25    

drasche > non, honnetement, je vois pas de crosspost.
 
Sur le présent topic, Kyle a un problème de fps en fonction de la profondeur du bureau
 
Sur le topic de JV, il souhaite avoir des avis sur son jeu
 
Et ici, il fait un lien sur le topic de JV pour avoir d'autres avis. A la rigueur, on pourrait considérer ces 2 derniers topics comme légèrement identiques, mais ce n'est pas fait dans le but d'obtenir une quelconque réponse, mais pour avoir des avis de compatibilités sur différentes configs.
 
Et encore, je suis pas sur qu'il ait pas posté sur JV pour avoir l'avis sur le coté ludique, et ici pour le coté compatibilité.
 
A trancher. En ce qui me concerne, je ne vois pas de crosspost.
 
Par contre, Kyle & tetedeiench, je vous serais reconnaissant de rester polis.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-03-2003 à 13:08:11    

Tetragrammaton IHVH a écrit :


 
Je me demande quel est le "plus boulet", dans ce cas là...
 
C'est peut être celui qui ne sait pas résoudre un problème  aussi évident...


Une autre réflexion de ce genre et c'est le TT. Il débute en OpenGL, c'est pas une raison pour l'enfoncer.
Et si t'es si malin, au lieu de le casser, tu ferais mieux de lui donner la solution, qu'on en finisse avec ce topic qui se rapproche dangeureusement du combat de rues.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-03-2003 à 13:21:34    

Tetragrammaton IHVH a écrit :


 
Je me demande quel est le "plus boulet", dans ce cas là...
 
C'est peut être celui qui ne sait pas résoudre un problème  aussi évident...


 
Si c'était si évident que ça on m'aurait peut être déjà donné la réponse non ?


Message édité par Kyle_Katarn le 03-03-2003 à 13:23:07
Reply

Marsh Posté le 03-03-2003 à 14:30:56    

Gangs of HFR

Reply

Marsh Posté le 03-03-2003 à 14:40:09    

sinon pour l'histoire, j'ai pas pratiqué l'opengl, juste lorgné, mais le fait de passer en 16bpp pour ton front/back buffer, fait que tu as un couple back buffer/zbuffer non supporté et tu parts en rendu logiciel via le driver crosoft :??:
sinon autrement je vois poa comme ça...

Reply

Marsh Posté le 03-03-2003 à 14:40:19    

Reply

Marsh Posté le 03-03-2003 à 14:42:53    

BJOne a écrit :

sinon pour l'histoire, j'ai pas pratiqué l'opengl, juste lorgné, mais le fait de passer en 16bpp pour ton front/back buffer, fait que tu as un couple back buffer/zbuffer non supporté et tu parts en rendu logiciel via le driver crosoft :??:
sinon autrement je vois poa comme ça...


 
ca me paraitrait chelou qu'une carte supporte pas le zb en 16.
Par contre si il utilise le stencil buffer alors la c different (mais je ne crois pas, vu qu'il n'en fait pas mention)
 
t'as essaye en utilisant des textures 16bits ? (histoire de ?)

Reply

Marsh Posté le 03-03-2003 à 14:48:17    

par contre tu pourrais mettre un peu de filtrage trilinéaire boudiou  :o   :D


Message édité par bjone le 03-03-2003 à 14:48:31
Reply

Marsh Posté le 03-03-2003 à 17:17:16    

Voilà donc ma fonction d'initialisation :  
 

Code :
  1. bool bSetupPixelFormat(HDC hdc)
  2. {
  3.     PIXELFORMATDESCRIPTOR pfd;
  4.     int pixelformat;
  5.     pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);   // Set the size of the structure
  6.     pfd.nVersion = 1;         // Always set this to 1
  7.              // Pass in the appropriate OpenGL flags
  8.     pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
  9.     pfd.dwLayerMask = PFD_MAIN_PLANE;     // We want the standard mask (this is ignored anyway)
  10.     pfd.iPixelType = PFD_TYPE_RGBA;       // We want RGB and Alpha pixel type
  11.     pfd.cColorBits = SCREEN_DEPTH;      // Here we use our #define for the color bits
  12.     pfd.cDepthBits = SCREEN_DEPTH;      // Depthbits is ignored for RGBA, but we do it anyway
  13.     pfd.cAccumBits = 0;         // No special bitplanes needed
  14.     pfd.cStencilBits = 0;        // We desire no stencil bits
  15. // This gets us a pixel format that best matches the one passed in from the device
  16.     if ( (pixelformat = ChoosePixelFormat(hdc, &pfd)) == FALSE )
  17.     {
  18.         MessageBox(NULL, "ChoosePixelFormat failed", "Error", MB_OK);
  19.         return FALSE;
  20.     }
  21. // This sets the pixel format that we extracted from above
  22.     if (SetPixelFormat(hdc, pixelformat, &pfd) == FALSE)
  23.     {
  24.         MessageBox(NULL, "SetPixelFormat failed", "Error", MB_OK);
  25.         return FALSE;
  26.     }
  27.     return TRUE;          // Return a success!
  28. }


 
 
que SCREEN_DEPTH vaille 16 ou 32, j'ai le même problème quand le bureau est en 16.
Le probème apparait sur toute congif (de ma CG S3Twister à des G4 Ti) donc c'est apparamment un problème de code...

Reply

Marsh Posté le 03-03-2003 à 18:36:42    

Up désespéré.
 
Autre truc que je comprend pas, je peux mettre SCREEN_DEPTH à 2 ou même 0 ça change strictement rien ...

Reply

Marsh Posté le 03-03-2003 à 19:15:50    

bin le problème, c'est que quand tu fais du rendu en fenêtre, si le format pixel du mode opengl est différent de celui du bureau, le driver doit faire un changement de format au lieu d'une bête recopie.

Reply

Marsh Posté le 03-03-2003 à 19:21:32    

Le problème est que ça le fait aussi quand je passe en plein écran et que ça le fait même quand je mets tout en 16 bits
 

Reply

Marsh Posté le 03-03-2003 à 19:26:32    

Espérons que tetedeiench finissent par nous donner la solution qu'il dit connaitre ...

Reply

Marsh Posté le 03-03-2003 à 19:29:13    

Kyle_Katarn a écrit :

Espérons que tetedeiench finissent par nous donner la solution qu'il dit connaitre ...


Mai cai supair, dis-moi, de relancer la baston qui avait pourtant l'air d'être terminée [:dawa]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 03-03-2003 à 19:32:06    

J'essaie pas de relancer la baston mais il disait avoir la solution et vu que personne ne semble pouvoir résoudre mon problème je suis près à faire un post d'excuse lui étant consacré si effectivement il se révèle capable de répondre à mon appel à l'aide.

Reply

Marsh Posté le 03-03-2003 à 19:35:15    

Kyle_Katarn a écrit :

J'essaie pas de relancer la baston mais il disait avoir la solution et vu que personne ne semble pouvoir résoudre mon problème je suis près à faire un post d'excuse lui étant consacré si effectivement il se révèle capable de répondre à mon appel à l'aide.


Ah OK alors dans ce cas-là, j'ai rien dit.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 03-03-2003 à 23:37:18    

Personne pour m'aider ? (snif)

Reply

Marsh Posté le 04-03-2003 à 00:51:14    

à la limite, un truc pour essayer:
 
si tu peux logger dans un fichier le nom du pilote opengl utilisé (quake3 te l'affiche, ainsi que les extensions), ça permetterai de savoir si dans les cas où ça chie tu part avec le renderer opengl software de microsoft. mé bon c'est histoire de continuer dans mon trip initial :/
 

Reply

Marsh Posté le 04-03-2003 à 00:55:31    

enfin chez moi, pour que ça ralentisse, il faut partir en fenêtre avec le bureau en 16bpp. le plein écran ne joues pas.
 
donc fait un exe en 16 bpp, et un autre en 32 bpp, qu'on soit fixé si c'est bien uniquement le fait d'avoir un rendu fenêtré avec le format pixel différent du bureau.

Reply

Marsh Posté le 04-03-2003 à 01:05:59    

Si tu veux le même exe, a des perfs différentes en bureau 16 et bureau 32.
 
Et l'étant du bureau lors de la compialtion ne fait rien ....
 
Comment on récupère le nom du pilote de rendu utilisé ?

Reply

Marsh Posté le 04-03-2003 à 08:57:13    

Ca va ptet pouvoir t'aider ... :o ...
http://www.plunk.org/~shreiner/SIG [...] ce.OpenGL/
 
EDIT :  
This might help too ... :sleep:  
http://www.opengl.org/developers/f [...] indows.htm


Message édité par Zzozo le 04-03-2003 à 09:01:49
Reply

Marsh Posté le 04-03-2003 à 09:02:33    

ok je regarde ça

Reply

Marsh Posté le 04-03-2003 à 09:26:21    

Merci pour l'info.
 
J'ai ajouté ce bout de code  
 

Code :
  1. DescribePixelFormat (hdc, pixelformat, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
  2. if ((pfd.dwFlags & PFD_GENERIC_ACCELERATED) ||
  3.        !(pfd.dwFlags & PFD_GENERIC_FORMAT)) 
  4.      MessageBox(NULL,"Accceleration Hardware","r",MB_OK);
  5.    else
  6.      MessageBox(NULL,"Accceleration Software","r",MB_OK);


 
et visiblement je ne suis en soft que quand le bureau est en 16 bits et que je joue en mode fenêtré...
En plein écran ça passe en hard dans tous les cas.

Reply

Marsh Posté le 04-03-2003 à 09:30:42    

Kyle_Katarn a écrit :

Merci pour l'info.
 
J'ai ajouté ce bout de code  
 

Code :
  1. DescribePixelFormat (hdc, pixelformat, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
  2. if ((pfd.dwFlags & PFD_GENERIC_ACCELERATED) ||
  3.        !(pfd.dwFlags & PFD_GENERIC_FORMAT)) 
  4.      MessageBox(NULL,"Accceleration Hardware","r",MB_OK);
  5.    else
  6.      MessageBox(NULL,"Accceleration Software","r",MB_OK);


 
et visiblement je ne suis en soft que quand le bureau est en 16 bits et que je joue en mode fenêtré...
En plein écran ça passe en hard dans tous les cas.


Pour moi, ca dépend de l'implémentation OpenGL sous jacente du système ...  
Cé ce qui explique les perfs si différentes d'un système à un autre ... la combinaison hard + drivers est différente d'une config à une autre, et cé ce qui explique toutes ces différence de perfs ...

Reply

Marsh Posté le 04-03-2003 à 09:31:19    

Kyle_Katarn a écrit :

Merci pour l'info.
 
J'ai ajouté ce bout de code  
 

Code :
  1. DescribePixelFormat (hdc, pixelformat, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
  2. if ((pfd.dwFlags & PFD_GENERIC_ACCELERATED) ||
  3.        !(pfd.dwFlags & PFD_GENERIC_FORMAT)) 
  4.      MessageBox(NULL,"Accceleration Hardware","r",MB_OK);
  5.    else
  6.      MessageBox(NULL,"Accceleration Software","r",MB_OK);


 
et visiblement je ne suis en soft que quand le bureau est en 16 bits et que je joue en mode fenêtré...
En plein écran ça passe en hard dans tous les cas.


Tu as remis à jour ton exe ? que je teste chez moi ...
EDIT : Et une version Linux, cé trop demander ?  :ange:


Message édité par Zzozo le 04-03-2003 à 09:32:02
Reply

Marsh Posté le 04-03-2003 à 09:35:05    

Ben là je débute donc je fais du Win mais je passerais sous linux dès que possible.
 
Si tu me donne ton adresse mail (par MP) je peux même te mailler le code source si tu peux m'aider ...
 
Sur les sites cités (!) ils disent vaguement d'utilier ChoosePixelFormat de manière itérative jusqu'à avoir le flag PFD_GENERIC_ACCELERATED mais je vois pas trop comment faire ...

Reply

Marsh Posté le 04-03-2003 à 09:58:20    

Kyle_Katarn a écrit :

Ben là je débute donc je fais du Win mais je passerais sous linux dès que possible.
 
Si tu me donne ton adresse mail (par MP) je peux même te mailler le code source si tu peux m'aider ...
 
Sur les sites cités (!) ils disent vaguement d'utilier ChoosePixelFormat de manière itérative jusqu'à avoir le flag PFD_GENERIC_ACCELERATED mais je vois pas trop comment faire ...


Ben je pense que tu peux t'inspirer de ce bout de code là (tiré de  
http://www.plunk.org/~shreiner/SIG [...] lTests.cxx )

Code :
  1. void
  2. runTests( int width, int height )
  3. {
  4.   int     i;
  5.   void*   pixels;
  6.   PixelFormat* format;
  7.   struct timeval  start, finish;
  8.   //
  9.   //  Initialize OpenGL state
  10.   //
  11.   glRasterPos2i( 0, 0 );
  12.    
  13.   for ( format = formats; format->value != GL_ZERO; ++format ) {
  14.     format->error = GL_NO_ERROR;
  15.     pixels = genData( format->value, width, height );
  16.     glPixelStorei( GL_PACK_ALIGNMENT, format->alignment );
  17.    
  18.     glClear( GL_COLOR_BUFFER_BIT );
  19.     glDrawPixels( width, height, GL_RGBA, format->value, pixels );
  20.  
  21.     gettimeofday( &start, NULL );
  22.     for ( i = 0; i < numTrials; ++i )
  23.       glDrawPixels( width, height, GL_RGBA, format->value, pixels );   
  24.     glFinish();
  25.     gettimeofday( &finish, NULL );
  26.     format->time = finish.tv_usec - start.tv_usec;
  27.     if ( format->time < 0 ) {
  28.       --finish.tv_sec;
  29.       format->time += 1000000;
  30.     }
  31.     format->time /= 1000000;
  32.     format->time += (finish.tv_sec - start.tv_sec);
  33.    
  34.     GLenum error;
  35.     while ( (error = glGetError()) != GL_NO_ERROR ) {
  36.       format->time = -1.0;
  37.       format->error = error;
  38.     }
  39.     free( pixels );
  40.   }
  41.   double  minTime = formats[0].time;
  42.   for ( format = &formats[1]; format->value != GL_ZERO; ++format )
  43.     if ( format->time > 0 && minTime > format->time )
  44.       minTime = format->time;
  45.   for ( format = formats; format->value != GL_ZERO; ++format ) {
  46.     printf( "  %-35s: ", format->name );
  47.     if ( format->time > 0 )
  48.       printf( "%6f secs [ % 7.3f ]\n", format->time, format->time / minTime );
  49.     else
  50.       printf( "Returned '%s' error\n", gluErrorString(format->error) );
  51.   }
  52. }


A priori, sa boucle for ressemble fort à cette itération dont tu as besoin justement ...
 
EDIT : 10 heures  ... :ouch: !!! ... Faut que j'aille prendre mon petit déj moi ... :D ... @+  :hello:


Message édité par Zzozo le 04-03-2003 à 10:05:13
Reply

Marsh Posté le 04-03-2003 à 10:59:18    

lol

Reply

Marsh Posté le 04-03-2003 à 12:42:24    

QQ résultats :
La config : Celeron Tualatin 1,2 GHz + 256 Mo SD-RAM + GeForce 2 Ti 64 Mo
- Sous Windows XP : ca oscille entre 80 et 500 fps suivant les modes
- Sous Linux, en émulation avec Winex-cvs et avec un MP3 en fond musical ( [:joce] ) :
ca oscille entre 80 et 110 fps   ( Remarque : pas testé en plein écran sous Linux ... à cause de la résolution de mon bureau)
 
Il semble que la GeForce 2 et ses pilotes fassent bien leur boulot ... :D
 
 
Je vais voir pour un portage en natif sous Linux ...  
 [:zerod]
 
 
MAJ : 180-190 fps sous Linux, toujours en émulation, en changeant un paramètre ...  :whistle:


Message édité par Zzozo le 04-03-2003 à 12:46:06
Reply

Marsh Posté le 04-03-2003 à 12:46:04    

et pour mon problème de mode fenétré (bureau 16 bits) ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed