JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

BltFast spinnt mit neuem NVidia Treiber
Gehe zu Seite Zurück  1, 2
 
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: 08.09.2005, 15:06    Titel: Antworten mit Zitat

So, mir sind jetzt 2 Dinge aufgefallen:

1. Ich hab mal die Breite und Höhe eines Buttons auf 256x32 gesetzt --> das selbe Problem in grün. Sad
2. Wenn ich die Surfaces im Systemmemory statt im Videomemory speichere, geht es. Allerdings sehen dann ber natürlich die FPS mit 62 statt >999 ziemlich schlecht aus. Twisted Evil

Hier mal der Code, mit dem ich alle Surfaces (außer Front- und Backbuffer) erstelle:

CPP:
MDD_ERROR DirectDraw::CreateSurface(const unsigned short width, const unsigned short height,Surface& surface)
{
   DDSURFACEDESC2 surface_desc;

   ZeroMemory(&surface_desc,sizeof(surface_desc));
   surface_desc.dwSize = sizeof(surface_desc);

   surface_desc.dwFlags =  DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT;
   surface_desc.dwWidth=width;
   surface_desc.dwHeight=height;
   surface_desc.ddsCaps.dwCaps = DDSCAPS_VIDEOMEMORY;
   surface_desc.ddpfPixelFormat.dwFlags = DDPF_RGB;
   surface_desc.ddpfPixelFormat.dwRGBBitCount=32;
   surface_desc.ddpfPixelFormat.dwRBitMask=0xFF0000;
   surface_desc.ddpfPixelFormat.dwGBitMask=0x00FF00;
   surface_desc.ddpfPixelFormat.dwBBitMask=0x0000FF;

   HRESULT hr;
again:
   if((hr = dd->CreateSurface(&surface_desc,&surface.surface,NULL)) == DDERR_OUTOFVIDEOMEMORY)
   {
      surface_desc.ddsCaps.dwCaps = DDSCAPS_SYSTEMMEMORY;
      goto again;
   }
   else if(hr)
      return MDDE_CANTCREATESURFACE;

   surface.SetColorKey(0xFF00FF);

   surface.width = width;
   surface.height = height;
   
   return MDDE_OK;
}


Ich weiß ein goto, aber hier fand ich eine Schleife ein bisschen Overhead. Rolling Eyes
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 08.09.2005, 16:46    Titel: Antworten mit Zitat

Gegen goto an sich ist oweit nichts auszusetzen, aber hier hätte ich es eventuell so gelöst:
CPP:
if((dd->CreateSurface(&surface_desc,&surface.surface,NULL)) == DDERR_OUTOFVIDEOMEMORY) {
  surface_desc.ddsCaps.dwCaps = DDSCAPS_SYSTEMMEMORY;
  if(dd->CreateSurface(&surface_desc, &surface.surface, NULL))
    return MDDE_CANTCREATESURFACE;
}

Des weiteren vermisse ich die Angaben lPitch in surface_desc, dwSize in surface_desc.ddpfPixelFormat und eventuell noch den FourCC-Wert in surface_desc.ddpfPixelFormat (D3DFMT_X8R8G8B8)
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
OLiver
Super JLI'ler


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

BeitragVerfasst am: 08.09.2005, 17:49    Titel: Antworten mit Zitat

Zitat:

Des weiteren vermisse ich die Angaben lPitch in surface_desc


Wieso soll ich den Pitch selbst bestimmen? Confused

Zitat:

dwSize in surface_desc.ddpfPixelFormat


Stimmt, hab ich vergessen, ändert sich leider aber auch nichts Sad

Zitat:

eventuell noch den FourCC-Wert in surface_desc.ddpfPixelFormat (D3DFMT_X8R8G8B8)


Ähm und auf was soll ich das setzen?
Mögliche Werte
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
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: 08.09.2005, 18:28    Titel: Antworten mit Zitat

Problem gelöst. Very Happy

Da ich MMX benutzt hatte und zwischen den Blit - Aufrufen kein emms aufgerufen hatte, und da das FastBlt anscheinend benötigt, ging es nicht. Jetzt geht alles wieder super. Smile
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
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
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
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