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

  FORUM HardWare.fr
  Programmation

  [C++] Direct Draw -> Back buffer obligatoire ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Direct Draw -> Back buffer obligatoire ?

n°48396
antsite
Je me souviens
Posté le 23-07-2001 à 10:55:35  profilanswer
 

Est-on obligé d'utiliser le back buffer avec ddraw ?
Voici mon code, il compile mais ne marche pas -> Message d'erreur Windows
 
 LPDIRECTDRAW dd;
 DDSURFACEDESC ddsd;
 LPDIRECTDRAWSURFACE lpDDSPrimary;
 HDC hdc;
 HWND hwnd;
 
 char szFrontMsg[] = "Front Message";
 
 DirectDrawCreate(NULL,&dd,NULL);
 dd->SetCooperativeLevel(hwnd,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
 dd->SetDisplayMode(640,480,8);
 
 ddsd.dwSize = sizeof(ddsd);
 ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
 ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
 ddsd.dwBackBufferCount = 1;
 
 dd->CreateSurface(&ddsd,&lpDDSPrimary,NULL);
 
 if (lpDDSPrimary->GetDC(&hdc) == DD_OK) //***ICI que ça plante***
 {
  SetBkColor(hdc,RGB(0,0,255));
  SetTextColor(hdc,RGB(255,255,0));
  TextOut(hdc,0,0,szFrontMsg,lstrlen(szFrontMsg));
  lpDDSPrimary->ReleaseDC(hdc);
 }
 
 Sleep(5000);
 
 if(dd != NULL)
 {
         if(lpDDSPrimary != NULL)
         {
             lpDDSPrimary->Release();
             lpDDSPrimary = NULL;
         }
 dd->Release();
        dd = NULL;
 }

mood
Publicité
Posté le 23-07-2001 à 10:55:35  profilanswer
 

n°48449
xilebo
noone
Posté le 24-07-2001 à 00:48:30  profilanswer
 

Salut
 
Ca fait longtemps que je n'utilise plus directdraw mais je vais essayer de me rappeler. Il me semble que au cas ou tu utilises un backbuffer ( DDSD_BACKBUFFERCOUNT utilisé ) tu ne dois pas ecrire directement dans la primary surface mais dans le backbuffer puis tu appelle primary->flip et ca commute le pointeur des 2 surfaces : interet : lors d'une animation rapide tu ne vois pas un decoupage a l'affichage (a cause du vertical refresh).
 
Par contre si tu ne veux pas de back buffer , essaie de ne pas utiliser DDSD_BACKBUFFERCOUNT dans les flags de la structure DDSURFACEDESC de la primary surface.  
 
Mais bon, je peux t'assurer que le back buffer est tres utile.
 
( il y a des tests dans le SDK de directX qui te montre la diff entre les 2).
 
Enfin sache que dans DirectX8 , il n'y a plus de directdraw, tout est géré dans l'interface direct3D.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] Direct Draw -> Back buffer obligatoire ?

 

Sujets relatifs
[JAVA] pb avec affichage multiple swing/draw[c++/OpenGL] Pbl de Z-buffer
[JAVA]double bufferAfficher un pixel en direct daw
[Pascal] -> Probleme de buffer ...équivalent du ray picking directX6 en direct X8 -- gest° des colision
accès a des données d'un vertex buffer en directX????OpenGl - Depth Buffer
Ceation BD Access direct par codevideo/delphi/direct X
Plus de sujets relatifs à : [C++] Direct Draw -> Back buffer obligatoire ?


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