1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

direct3d auto renderer tweaks

This commit is contained in:
FunkyFr3sh 2018-09-30 03:06:45 +02:00
parent 1d43b112c9
commit abb88f456d

View File

@ -80,7 +80,7 @@ static void InitDirect3D(BOOL reset)
D3ddev, sizeof(vertices), 0, D3DFVF_XYZRHW | D3DFVF_TEX1, D3DPOOL_MANAGED, &D3dvb, NULL); D3ddev, sizeof(vertices), 0, D3DFVF_XYZRHW | D3DFVF_TEX1, D3DPOOL_MANAGED, &D3dvb, NULL);
void *data; void *data;
if (SUCCEEDED(D3dvb->lpVtbl->Lock(D3dvb, 0, 0, (void**)&data, 0))) if (D3dvb && SUCCEEDED(D3dvb->lpVtbl->Lock(D3dvb, 0, 0, (void**)&data, 0)))
{ {
memcpy(data, vertices, sizeof(vertices)); memcpy(data, vertices, sizeof(vertices));
D3dvb->lpVtbl->Unlock(D3dvb); D3dvb->lpVtbl->Unlock(D3dvb);
@ -113,6 +113,13 @@ DWORD WINAPI render_d3d9_main(void)
{ {
Sleep(500); Sleep(500);
D3d = NULL;
D3ddev = NULL;
SurfaceTex = NULL;
PaletteTex = NULL;
D3dvb = NULL;
PixelShader = NULL;
DWORD tick_start = 0; DWORD tick_start = 0;
DWORD tick_end = 0; DWORD tick_end = 0;
DWORD frame_len = 0; DWORD frame_len = 0;
@ -162,7 +169,9 @@ DWORD WINAPI render_d3d9_main(void)
} }
} }
while (D3ddev && ddraw->render.run && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED) BOOL useDirect3D = D3d && D3ddev && SurfaceTex && PaletteTex && D3dvb && PixelShader;
while (useDirect3D && ddraw->render.run && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED)
{ {
#if _DEBUG #if _DEBUG
static DWORD tick_fps = 0; static DWORD tick_fps = 0;
@ -284,14 +293,12 @@ DWORD WINAPI render_d3d9_main(void)
if (hD3D9) if (hD3D9)
FreeLibrary(hD3D9); FreeLibrary(hD3D9);
if (!D3ddev) if (!useDirect3D)
{ {
ShowDriverWarning = TRUE; ShowDriverWarning = TRUE;
ddraw->renderer = render_soft_main; ddraw->renderer = render_soft_main;
render_soft_main(); render_soft_main();
} }
D3ddev = NULL;
return 0; return 0;
} }