diff --git a/src/render_d3d9.c b/src/render_d3d9.c index 45121bc..449b611 100644 --- a/src/render_d3d9.c +++ b/src/render_d3d9.c @@ -154,15 +154,27 @@ DWORD WINAPI render_d3d9_main(void) D3dpp.BackBufferHeight = ddraw->render.height; D3dpp.BackBufferFormat = D3DFMT_X8R8G8B8; D3dpp.BackBufferCount = 1; - - D3d->lpVtbl->CreateDevice( - D3d, - D3DADAPTER_DEFAULT, - D3DDEVTYPE_HAL, - ddraw->hWnd, + + DWORD behaviorFlags[] = { + D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE, + D3DCREATE_HARDWARE_VERTEXPROCESSING, + D3DCREATE_MIXED_VERTEXPROCESSING, D3DCREATE_SOFTWARE_VERTEXPROCESSING, - &D3dpp, - &D3ddev); + }; + + int i; + for (i = 0; i < sizeof(behaviorFlags)/sizeof(behaviorFlags[0]); i++) + { + if (SUCCEEDED(D3d->lpVtbl->CreateDevice( + D3d, + D3DADAPTER_DEFAULT, + D3DDEVTYPE_HAL, + ddraw->hWnd, + D3DCREATE_NOWINDOWCHANGES | behaviorFlags[i], + &D3dpp, + &D3ddev))) + break; + } if (D3ddev) InitDirect3D(FALSE);