Fullscreen
-
Ich habe bei meiner Anwendung einfach
d3dpp.Windowed = TRUE;mit
d3dpp.Windowed = FALSE;ausgetauscht, um eine Fullscreenanwendung zu erhalten. Doch beim Debugen kommt folgende Meldung:
Unbehandelte Ausnahme bei 0x004045be in Simulation.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.
Der Debuger gibt dabei einen Hinweis auf diese Stelle:
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,1.0f), 1.0f, 0 );Hat jmd. von euch eine Idee, woran es liegen kann bzw. wie ich das Problem beheben kann.
Ich bedanken mich für jede Antwort !
-
sieht so aus als haettest du keinen backbuffer.
zeig mal den restlichen inhalt von "d3dpp".
-
g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ); if( g_pD3D == NULL ) { return; } //Displaymode abfragen D3DDISPLAYMODE d3ddm; if( FAILED( g_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &d3ddm ) ) ) { return; } HRESULT hr; //Deviceformat abfragen if( FAILED( hr = g_pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, d3ddm.Format, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D16 ) ) ) { if( hr == D3DERR_NOTAVAILABLE ) return; } D3DCAPS9 d3dCaps; if( FAILED( g_pD3D->GetDeviceCaps( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &d3dCaps ) ) ) { // TO DO: Respond to failure of GetDeviceCaps return; } DWORD dwBehaviorFlags = 0; if( d3dCaps.VertexProcessingCaps != 0 ) dwBehaviorFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING; else dwBehaviorFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING; //Presentparameters setzen D3DPRESENT_PARAMETERS d3dpp; memset(&d3dpp, 0, sizeof(d3dpp)); d3dpp.BackBufferFormat = d3ddm.Format; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.Windowed = FALSE; d3dpp.EnableAutoDepthStencil = TRUE; d3dpp.AutoDepthStencilFormat = D3DFMT_D16; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_hWnd, dwBehaviorFlags, &d3dpp, &g_pd3dDevice ) ) ) { return; }
-
pressure schrieb:
Ich habe bei meiner Anwendung einfach
d3dpp.Windowed = TRUE;mit
d3dpp.Windowed = FALSE;ausgetauscht, um eine Fullscreenanwendung zu erhalten. Doch beim Debugen kommt folgende Meldung:
Unbehandelte Ausnahme bei 0x004045be in Simulation.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.
Der Debuger gibt dabei einen Hinweis auf diese Stelle:
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,1.0f), 1.0f, 0 );Hat jmd. von euch eine Idee, woran es liegen kann bzw. wie ich das Problem beheben kann.
Ich bedanken mich für jede Antwort !
Was gibt denn die debugausgabe von d3d aus?
ist g_pd3dDevice 0 ?
-
D3DPRESENT_PARAMETERS d3dpp; memset(&d3dpp, 0, sizeof(d3dpp)); d3dpp.BackBufferFormat = d3ddm.Format; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.Windowed = FALSE; d3dpp.EnableAutoDepthStencil = TRUE; d3dpp.AutoDepthStencilFormat = D3DFMT_D16; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;Du solltest in den D3DPRESENT_PARAMETERS die Eintraege BackBufferWidth und BackBufferHeight setzen.