Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2837 connectés 

 


Dernière réponse
Sujet : [C] OpenGL en FullScreen
sombresonge

Godbout a écrit a écrit :

Normalement ca ca devrait passer.
 
DEVMODE dmScreenSettings;     // Device Mode
  memset(&dmScreenSettings,0,sizeof(dmScreenSettings));  // Makes Sure Memory's Cleared
  dmScreenSettings.dmSize=sizeof(dmScreenSettings);  // Size Of The Devmode Structure
  dmScreenSettings.dmPelsWidth = width;   // Selected Screen Width
  dmScreenSettings.dmPelsHeight = height;   // Selected Screen Height
  dmScreenSettings.dmBitsPerPel = bits;    // Selected Bits Per Pixel
  dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
 
if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
{
erreur
}  




 
Non ça passe pas. C exactement ce que j'ai fait (cf plus haut!)


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
sombresonge

Godbout a écrit a écrit :

Normalement ca ca devrait passer.
 
DEVMODE dmScreenSettings;     // Device Mode
  memset(&dmScreenSettings,0,sizeof(dmScreenSettings));  // Makes Sure Memory's Cleared
  dmScreenSettings.dmSize=sizeof(dmScreenSettings);  // Size Of The Devmode Structure
  dmScreenSettings.dmPelsWidth = width;   // Selected Screen Width
  dmScreenSettings.dmPelsHeight = height;   // Selected Screen Height
  dmScreenSettings.dmBitsPerPel = bits;    // Selected Bits Per Pixel
  dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
 
if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
{
erreur
}  




 
Non ça passe pas. C exactement ce que j'ai fait (cf plus haut!)

godbout Normalement ca ca devrait passer.
 
DEVMODE dmScreenSettings;     // Device Mode
  memset(&dmScreenSettings,0,sizeof(dmScreenSettings));  // Makes Sure Memory's Cleared
  dmScreenSettings.dmSize=sizeof(dmScreenSettings);  // Size Of The Devmode Structure
  dmScreenSettings.dmPelsWidth = width;   // Selected Screen Width
  dmScreenSettings.dmPelsHeight = height;   // Selected Screen Height
  dmScreenSettings.dmBitsPerPel = bits;    // Selected Bits Per Pixel
  dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
 
if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
{
erreur
}
sombresonge J'y arrive PAS! Voilà ce que je fais et ça passe pas en plein écran:
 
void InitGL(HDC* dc, HGLRC* rc, HWND hGlWnd)
{
 
 PIXELFORMATDESCRIPTOR pfd =
 {
  sizeof(PIXELFORMATDESCRIPTOR),
   1,
   PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER,
   PFD_TYPE_RGBA,
   32,
   0, 0, 0, 0, 0, 0,
   0, 0,
   0, 0, 0, 0, 0,
   32,
   0,
   0,
   0,
   0,
   0,
   0,
   0
 };
 int PixelFormat;
 
 DEVMODE devmode;  
 
 ZeroMemory(&devmode,sizeof(DEVMODE));
 devmode.dmSize=sizeof(DEVMODE);
 devmode.dmBitsPerPel=32;
 devmode.dmPaperWidth=640;
 devmode.dmPelsHeight=480;
 devmode.dmFields=DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
 
 if(ChangeDisplaySettings(&devmode,CDS_FULLSCREEN)
!=DISP_CHANGE_SUCCESSFUL)
  MessageBox(hGlWnd,"Impossible de Passer en FullScreen","Erreur",MB_OK);
 
 *dc=GetDC(hGlWnd);
 
 PixelFormat = ChoosePixelFormat(*dc, &pfd);
 if(!PixelFormat)
 {
  MessageBox( hGlWnd,
     "Mode Graphique Non supporté",
     "Problème",
     MB_ICONERROR | MB_OK );
  exit(1);
 }
 
 if(!SetPixelFormat(*dc, PixelFormat,&pfd))
 {
  MessageBox( hGlWnd,
     "Mode graphique Non supporté",
     "Problème",
     MB_ICONERROR | MB_OK );
  exit(1);
 }
 
 *rc=wglCreateContext(*dc);
 wglMakeCurrent(*dc, *rc);
 
 glClearColor(.5,.5,.5,0);
 glEnable(GL_TEXTURE_2D);
 glEnable(GL_DEPTH_TEST);  
}
sombresonge

tgrx a écrit a écrit :

 
Pour le full screen total, je crains cependant qu'il ne faille utiliser directx sous peine de manipulation assez lourde de l'API :(  




 
C pas trop grave ça. Je vais essayé de le faire demain avec le:
ChangeDisplaySettings(...);

tgrx mouais l'idée était peut-être pas excellente ;)  
 
sinon tu peux toujours faire un faux fullscreen en stretchant une fenetre pour qu'elle ait la meme taille que la résolution de l'écran.
 
Tu perds 5% de perfs environ (paske windows continue à afficher son bordel derriere meme si on le voit pas), mais c'est pas dramatique.
Pour le full screen total, je crains cependant qu'il ne faille utiliser directx sous peine de manipulation assez lourde de l'API :(
sombresonge

tgrx a écrit a écrit :

ok, moi je te parlais juste d'une fonction simple ;)  




 
Parceque tu peut le faire avec directdraw?
 
simple:
 
DirecDrawCreateEX(NULL,(LPVOID*)&lpDD,IID_IDirectDraw7,NULL);
lpDD->SetCooperativeLevel(hWnd,DDSCL_NORMAL);
...
lpDD->CreateSurface(&ddsd,&lpDDSPrimary,NULL);
...
 
Si c ça que tu appelle Simple! (sans compter la tonne de variable global etc.)

tgrx ok, moi je te parlais juste d'une fonction simple ;)
sombresonge

tgrx a écrit a écrit :

Le + simple, ouvre une fenetre en full screen avec DirectDraw, et utilise OpenGL dedans.
 
Y a pas de fonction OpenGL pour ouvrir une fenetre. Ou alors faut utiliser glut, mais c'est vite limité quand on veut faire un jeu vidéo  :D  




 
Si je voulais faire du DirectX je ferais du DirectX!
 
Si on peut ouvrir une fenetre en OpenGL sans glut (je sais je l'ai fait) il suffit de passer par les fonction de l'API ou par les MFC. Le problème c de passer la fenêtre en FullScreen mais je crois effectivement que ChangeDisplaySettings() est un début...

tgrx Le + simple, ouvre une fenetre en full screen avec DirectDraw, et utilise OpenGL dedans.
 
Y a pas de fonction OpenGL pour ouvrir une fenetre. Ou alors faut utiliser glut, mais c'est vite limité quand on veut faire un jeu vidéo  :D
youdontcare de mémoire, qqchose comme ChangeDisplaySettings() ...
sombresonge :hello: Comment on fait sous win32?

 

[edtdd]--Message édité par sombresonge--[/edtdd]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)