DirectDraw - BackBuffer - Problem
-
Hallo~
Mein Problem ist, das ich immer def "DDERR_NOTFOUND" Fehler bekomme, wenn ich probiere per GetAttachedSurface einen BackBuffer zu holen. Dieser Fehler tritt auch bei diversen Tutorial-SourceCodes auf, selbst wenn ich sie nicht selber kompiliere..vielleicht kann mir einer von euch sagen, wo das Problem liegt. ..für links zu guten Tutorialen wäre ich auch dankbar.int InitDD(HWND hWnd) { DDSURFACEDESC2 ddsd; //DirectDrawSurface-Struktur DDSCAPS2 ddscaps; //DirectDrawSurfaceCaptures-Struktur HRESULT ddrval; //Fehlercode-Variable für DirectX ddrval = DirectDrawCreateEx(NULL, (void**)&lpDirectDraw, IID_IDirectDraw7, NULL); //Erstellen des DirectDraw-Objekts if(ddrval!=DD_OK) //Überprüfen ob DirectDraw-Objekt erstellt werden konnte und bei Scheitern Fehlermeldung ausgeben { MessageBox(hWnd, "DirectDrawCreateEx fehlgeschlagen !", "Err0r", MB_OK); return 0; } ddrval = lpDirectDraw->SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN); //CooperativeLevel festlegen if(ddrval!=DD_OK) //Überprüfen ob CooperativeLevel gesetzt werden konnte und bei Scheitern Fehlermeldung ausgeben { MessageBox(hWnd, "SetCooperativeLevel fehlgeschlagen !", "Err0r", MB_OK); return 0; } memset(&ddsd, 0, sizeof(ddsd)); //Leeren der Struktur //Füllen der Struktur ddsd.dwSize = sizeof(ddsd); ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX; //Surface soll als PrimarySurface dienen ddsd.dwBackBufferCount = 1; //Ein BackBuffer ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; ddrval = lpDirectDraw->CreateSurface(&ddsd, &lpddsPrimary, NULL); //Surface erstellen if(ddrval!=DD_OK) //Überprüfen ob Surface erstellt werden konnte und bei Scheitern Fehlermeldung ausgeben { MessageBox(hWnd, "CreateSurface fehlgeschlagen !", "Err0r", MB_OK); return 0; } ddscaps.dwCaps = DDSCAPS_BACKBUFFER; //Soll als BackBuffer dienen ddrval = lpddsPrimary->GetAttachedSurface(&ddscaps, &lpddsBack); //BackBuffer vom PrimarySurface erhalten if(ddrval!= DD_OK) //Überprüfen ob BackBuffer erstellt werden konnte und bei Scheitern Fehlermeldung ausgeben { MessageBox(hWnd, "GetAttachedSurface fehlgeschlagen !", "Err0r", MB_OK); return 0; } return 1; }
Wäre auch nett, wenn ihr die Comments berichtigen könntet, falls etwas nicht so stimmt...bin erst dabei meine ersten DirectX-Schritte zu gehen und bin gleich am Anfang der Tutorials auf dieses Problem gestossen.
Lumpensammler~
-
Lumpensammler schrieb:
vielleicht kann mir einer von euch sagen, wo das Problem liegt.
Die DX Debugruntimes.
Bye, TGGC (Der Held lebt!)
-
Soll das mit "Err0r" ein Joke sein?
-
dali schrieb:
Soll das mit "Err0r" ein Joke sein?
Was bitte..?
TGGC schrieb:
Lumpensammler schrieb:
vielleicht kann mir einer von euch sagen, wo das Problem liegt.
Die DX Debugruntimes.
Ok...danke
-
ich habe dasselbe problem (wollte eine Klasse schreiben). Ich habe die Variablen (directX Object, primary-surface, backbuffer) als private variablen deklariert...
und was sollen die DX Debugruntimes sein???
-
Lumpensammler schrieb:
dali schrieb:
Soll das mit "Err0r" ein Joke sein?
Was bitte..?
[cpp]
MessageBox(hWnd, "SetCooperativeLevel fehlgeschlagen !", "Err0r", MB_OK);
[/cpp]
-
dino schrieb:
ich habe dasselbe problem (wollte eine Klasse schreiben). Ich habe die Variablen (directX Object, primary-surface, backbuffer) als private variablen deklariert...
und was sollen die DX Debugruntimes sein???
DX Runtimes zum debuggen.
Bye, TGGC (Pipe my World.)
-
dino und ich haben unser problem jetzt gelöst:
In einer Klasse ist das DDSCAPS2-Struct nicht initialisiert, deshalb wird es von der Funktion GetAttachedSurface nicht akzeptiert. Wenn ich nun ZeroMemory davor aufrufe, funktioniert es. Vielleicht hilft dir das ja weiter...
honae
-
Vieleicht hätten die DebugRuntimes das auch gefunden...
Bye, TGGC (Pipe my World.)