 |
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: 08.09.2005, 15:06 Titel: |
|
|
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.
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.
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.  _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 08.09.2005, 16:46 Titel: |
|
|
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 |
|
 |
OLiver Super JLI'ler

Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 08.09.2005, 17:49 Titel: |
|
|
Zitat: |
Des weiteren vermisse ich die Angaben lPitch in surface_desc
|
Wieso soll ich den Pitch selbst bestimmen?
Zitat: |
dwSize in surface_desc.ddpfPixelFormat
|
Stimmt, hab ich vergessen, ändert sich leider aber auch nichts
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 |
|
 |
OLiver Super JLI'ler

Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 08.09.2005, 18:28 Titel: |
|
|
Problem gelöst.
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.  _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
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
|