DirectX - BackBuffer Problem
-
Also ich wollte mal ein wnig mit DirectX experimentieren und mir ne 2D Grafik ausgeben lassen, jedoch gab es schon beim BackBuffer einlesen ein kleines Problem:
Ich habe ein Fenster erstellen lassen, hatte Direct3D initialisiert, dann wollte ich nen BackBuffer einrichtenund hab dafür dies geschrieben:g_lpD3DDev->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &g_lpBackBuffer);Der Code ist korrekt laut VC++ 6.0 und es wurde mir in der Hinsicht kein Fehler angegeben...
Jedoch gibt WinXP mir den Fehler aus, dass es Problem aufgetreten sei und das Programm beendet werden müsste und ruft mir noch nicht einmal das Fenster auf, was das programm ohne die Zeile immer erstellt und anzeigt...
Währe toll, wenn jemand mir da helfen könnte...
btw. habe es mit DirectX9.0c(April 2006) und mit na DirectX9.0 Version probiert...
-
zeig mal etwas mehr code. ich tippe drauf, dass g_lpBackBuffer 0 ist und du trozdem irgendwas damit machst.
-
Im Grunde hab ich noch nicht viel gemacht nur halt in paar Sachen festgelegt
HRESULT rval; HWND g_hMainWnd; IDirect3D9* g_pD3D; IDirect3DDevice9* g_pDev; D3DDISPLAYMODE g_d3ddm; LPDIRECT3DSURFACE9 g_lpBackBuffer;ok nen bissl unsauber...
g_pD3D = Direct3DCreate9(D3D_SDK_VERSION); if (g_pD3D == NULL){ return false; } rval = g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &g_d3ddm); if FAILED(rval) { return false; } ZeroMemory(&g_d3dpp, sizeof(g_d3dpp)) g_d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP; g_d3dpp.Windowed = true; g_d3dpp.BackBufferFormat = g_d3ddm.Format; g_d3dpp.BackBufferWidth = 800; g_d3dpp.BackBufferHeight = 600; g_d3dpp.BackBufferCount = 1; g_d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; g_d3dpp.hDeviceWindow = g_hMainWnd; if(g_pD3D->CheckDeviceType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_d3ddm.Format,g_d3ddm.Format, true)==D3D_OK) if(g_pD3D->CheckDeviceType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_d3ddm.Format,g_d3ddm.Format, true)==D3D_OK) { rval = g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_hMainWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &g_d3dpp, &g_pDev); } else { rval = g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_hMainWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &g_d3dpp, &g_pDev); }So muss ich dann noch irgendwas machen, bevor ich meine GetBackBuffer Methode anwenden kann?
Gibt es denn niemanden, der mir da weiterhelfen kann?