JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=3ee315e5641a953bce8ea6bb6d0d8a9aMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

DD: Komm nicht an BackBuffer ran

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
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

BeitragVerfasst am: 03.07.2005, 07:45    Titel: DD: Komm nicht an BackBuffer ran Antworten mit Zitat

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 Confused :


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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 03.07.2005, 08:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 03.07.2005, 08:17    Titel: Antworten mit Zitat

Danke. Das geht, es lag wohl daran, dass ich vergessen hab, directdraw_caps zu nullen. Cool
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 03.07.2005, 08:22    Titel: Antworten mit Zitat

OLiver
Merke: Immer erst nullen, dann initialisieren Wink
_________________
'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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum