|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 03.07.2005, 07:45 Titel: DD: Komm nicht an BackBuffer ran |
|
|
Morgen,
Hab mich mal ein bisschen mit DirectDraw beschäftigt, der BackBuffer wird bloß nicht geholt, weiß irgendwie nich warum, hab den Code schon mit etlichen Tutorials verglichen :
CPP: | if(DirectDrawCreateEx( NULL, (void**)&dd, IID_IDirectDraw7, NULL))
return MDDE_CANTCREATEDD;
if(dd->SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN))
return MDDE_CANTSETCOOPERATIVELEVEL;
if(dd->SetDisplayMode(800,600,32,0,0))
return MDDE_CANTSETDISPLAYMODE;
DDSURFACEDESC2 surface_desc;
ZeroMemory(&surface_desc,sizeof(surface_desc));
surface_desc.dwSize = sizeof(surface_desc);
surface_desc.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
surface_desc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
surface_desc.dwBackBufferCount = 1;
if(dd->CreateSurface(&surface_desc,&frontbuffer,NULL))
return MDDE_CANTCREATEFRONTBUFFER;
DDSCAPS2 dc;
dc.dwCaps = DDSCAPS_BACKBUFFER;
HRESULT hr;
if(hr=frontbuffer->GetAttachedSurface(&dc, &backbuffer))
{
const char * err = DXGetErrorDescription9(hr); // = "The requested item was not found."
return MDDE_CANTGETBACKBUFFER;
}
|
_________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 03.07.2005, 08:03 Titel: |
|
|
Hi,
versuch mal das hier:
CPP: | // ///////////////////////////////////////////////////////////////////////////
// PRIVATE
//
// Erstellt eine Primary Surface mit einer Secondary Surface für den Real-Flipper
// ///////////////////////////////////////////////////////////////////////////
bool directdraw::createRealFlipper (unsigned long numAttached)
{
DEBUG_STACK;
// Hilfsstrukturen
::DDSURFACEDESC2 directdraw_surfacedesc;
::DDSCAPS2 directdraw_caps;
// Strukturen initialisieren
::ZeroMemory (&directdraw_surfacedesc, sizeof(directdraw_surfacedesc));
::ZeroMemory (&directdraw_caps, sizeof(directdraw_caps));
// Spezifikationen setzen
directdraw_surfacedesc.dwSize = sizeof (directdraw_surfacedesc);
directdraw_surfacedesc.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
directdraw_surfacedesc.ddsCaps.dwCaps = DDSCAPS_VIDEOMEMORY | DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;
directdraw_surfacedesc.dwBackBufferCount = numAttached;
// Primäre Surface erstellen
if (directdraw7_->CreateSurface (&directdraw_surfacedesc, &directdraw7_primary_, NULL) != DD_OK)
return (false);
// Nun die Spezifikation setzen für den Backbuffer
directdraw_caps.dwCaps = DDSCAPS_BACKBUFFER;
// Backbuffer hinzufügen
if (directdraw7_primary_->GetAttachedSurface (&directdraw_caps, &directdraw7_secondary_) != DD_OK)
{
// Fehlschlag! Primäre Surface freigeben
directdraw7_primary_->Release ();
directdraw7_primary_ = NULL;
// Real-Flipping ging nicht
return (false);
}
// Real-Flipping funktioniert!
return (true);
} |
_________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 03.07.2005, 08:17 Titel: |
|
|
Danke. Das geht, es lag wohl daran, dass ich vergessen hab, directdraw_caps zu nullen. _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|