From 519f499d23f4e80e6d7b855efe504668af605102 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Thu, 4 Oct 2018 06:27:03 +0200 Subject: [PATCH] improve d3d9 auto renderer check --- inc/paletteshader.h | 8 ++++---- src/main.c | 10 ++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/inc/paletteshader.h b/inc/paletteshader.h index 26258ec..d04d3b1 100644 --- a/inc/paletteshader.h +++ b/inc/paletteshader.h @@ -1,6 +1,6 @@ // old -static const char *PassthroughVertShader110Src = +static const char PassthroughVertShader110Src[] = "#version 110\n" "varying vec2 TexCoord0; \n" "\n" @@ -10,7 +10,7 @@ static const char *PassthroughVertShader110Src = " TexCoord0 = gl_MultiTexCoord0.xy; \n" "}\n"; -static const char *PaletteFragShader110Src = +static const char PaletteFragShader110Src[] = "#version 110\n" "uniform sampler2D SurfaceTex; \n" "uniform sampler2D PaletteTex; \n" @@ -26,7 +26,7 @@ static const char *PaletteFragShader110Src = // new -static const char *PassthroughVertShaderSrc = +static const char PassthroughVertShaderSrc[] = "#version 130\n" "in vec4 VertexCoord;\n" "in vec4 COLOR;\n" @@ -43,7 +43,7 @@ static const char *PassthroughVertShaderSrc = "}\n"; -static const char *PaletteFragShaderSrc = +static const char PaletteFragShaderSrc[] = "#version 130\n" "out vec4 FragColor;\n" "uniform sampler2D SurfaceTex;\n" diff --git a/src/main.c b/src/main.c index e5d44f8..8fd4041 100644 --- a/src/main.c +++ b/src/main.c @@ -1240,9 +1240,19 @@ HRESULT WINAPI DirectDrawCreate(GUID FAR* lpGUID, LPDIRECTDRAW FAR* lplpDD, IUnk DWORD version = GetVersion(); DWORD major = (DWORD)(LOBYTE(LOWORD(version))); DWORD minor = (DWORD)(HIBYTE(LOWORD(version))); + LPDIRECT3D9 d3d = NULL; // Win 7 and below use Direct3D 9 - Win 8/10 and wine use OpenGL if (!This->wine && (major < 6 || (major == 6 && minor <= 1)) && (hD3D9 = LoadLibrary("d3d9.dll"))) + { + IDirect3D9 *(WINAPI *D3DCreate9)(UINT) = + (IDirect3D9 *(WINAPI *)(UINT))GetProcAddress(hD3D9, "Direct3DCreate9"); + + if (D3DCreate9 && (d3d = D3DCreate9(D3D_SDK_VERSION))) + d3d->lpVtbl->Release(d3d); + } + + if (d3d) This->renderer = render_d3d9_main; else This->renderer = render_main;