mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
new .ini setting "d3d9_filter"
This commit is contained in:
parent
5fa01d8390
commit
4ec4260f8e
6
inc/dd.h
6
inc/dd.h
@ -32,6 +32,10 @@ HRESULT dd_CreateEx(GUID* lpGuid, LPVOID* lplpDD, REFIID iid, IUnknown* pUnkOute
|
|||||||
#define RESLIST_MINI 1
|
#define RESLIST_MINI 1
|
||||||
#define RESLIST_FULL 2
|
#define RESLIST_FULL 2
|
||||||
|
|
||||||
|
#define FILTER_NEAREST 0
|
||||||
|
#define FILTER_LINEAR 1
|
||||||
|
#define FILTER_CUBIC 2
|
||||||
|
|
||||||
#define SDM_MODE_SET_BY_GAME 0x00000001l
|
#define SDM_MODE_SET_BY_GAME 0x00000001l
|
||||||
#define SDM_LEAVE_WINDOWED 0x00000002l
|
#define SDM_LEAVE_WINDOWED 0x00000002l
|
||||||
#define SDM_LEAVE_FULLSCREEN 0x00000004l
|
#define SDM_LEAVE_FULLSCREEN 0x00000004l
|
||||||
@ -150,7 +154,7 @@ typedef struct CNCDDRAW
|
|||||||
BOOL flipclear;
|
BOOL flipclear;
|
||||||
BOOL locktopleft;
|
BOOL locktopleft;
|
||||||
BOOL lock_surfaces;
|
BOOL lock_surfaces;
|
||||||
BOOL d3d9linear;
|
int d3d9_filter;
|
||||||
BOOL gdilinear;
|
BOOL gdilinear;
|
||||||
BOOL d3d9on12;
|
BOOL d3d9on12;
|
||||||
int guard_lines;
|
int guard_lines;
|
||||||
|
@ -45,7 +45,7 @@ void cfg_load()
|
|||||||
g_ddraw->locktopleft = cfg_get_bool("locktopleft", FALSE);
|
g_ddraw->locktopleft = cfg_get_bool("locktopleft", FALSE);
|
||||||
g_ddraw->lock_surfaces = cfg_get_bool("lock_surfaces", FALSE);
|
g_ddraw->lock_surfaces = cfg_get_bool("lock_surfaces", FALSE);
|
||||||
g_ddraw->releasealt = cfg_get_bool("releasealt", FALSE);
|
g_ddraw->releasealt = cfg_get_bool("releasealt", FALSE);
|
||||||
g_ddraw->d3d9linear = cfg_get_bool("d3d9linear", TRUE);
|
g_ddraw->d3d9_filter = cfg_get_int("d3d9_filter", FILTER_CUBIC);
|
||||||
g_ddraw->gdilinear = cfg_get_bool("gdilinear", FALSE);
|
g_ddraw->gdilinear = cfg_get_bool("gdilinear", FALSE);
|
||||||
g_ddraw->d3d9on12 = cfg_get_bool("d3d9on12", FALSE);
|
g_ddraw->d3d9on12 = cfg_get_bool("d3d9on12", FALSE);
|
||||||
g_ddraw->resolutions = cfg_get_int("resolutions", RESLIST_NORMAL);
|
g_ddraw->resolutions = cfg_get_int("resolutions", RESLIST_NORMAL);
|
||||||
@ -304,8 +304,9 @@ static void cfg_create_ini()
|
|||||||
"; Should the window be resizable by the user in windowed mode?\n"
|
"; Should the window be resizable by the user in windowed mode?\n"
|
||||||
"resizable=true\n"
|
"resizable=true\n"
|
||||||
"\n"
|
"\n"
|
||||||
"; Enable linear (D3DTEXF_LINEAR) upscaling filter for the direct3d9 renderer\n"
|
"; Upscaling filter for the direct3d9 renderer\n"
|
||||||
"d3d9linear=true\n"
|
"; Possible values: 0 = nearest-neighbor, 1 = bilinear, 2 = bicubic (16/32bit color depth games only)\n"
|
||||||
|
"d3d9_filter=2\n"
|
||||||
"\n"
|
"\n"
|
||||||
"; Enable upscale hack for high resolution patches (Supports C&C1, Red Alert 1 and KKND Xtreme)\n"
|
"; Enable upscale hack for high resolution patches (Supports C&C1, Red Alert 1 and KKND Xtreme)\n"
|
||||||
"vhack=false\n"
|
"vhack=false\n"
|
||||||
|
@ -352,7 +352,7 @@ static BOOL d3d9_set_states()
|
|||||||
err = err || FAILED(IDirect3DDevice9_SetTexture(g_d3d9.device, 1, (IDirect3DBaseTexture9*)g_d3d9.palette_tex[0]));
|
err = err || FAILED(IDirect3DDevice9_SetTexture(g_d3d9.device, 1, (IDirect3DBaseTexture9*)g_d3d9.palette_tex[0]));
|
||||||
|
|
||||||
BOOL bilinear =
|
BOOL bilinear =
|
||||||
g_ddraw->d3d9linear &&
|
g_ddraw->d3d9_filter &&
|
||||||
g_d3d9.pixel_shader_upscale &&
|
g_d3d9.pixel_shader_upscale &&
|
||||||
(g_ddraw->render.viewport.width != g_ddraw->width || g_ddraw->render.viewport.height != g_ddraw->height);
|
(g_ddraw->render.viewport.width != g_ddraw->width || g_ddraw->render.viewport.height != g_ddraw->height);
|
||||||
|
|
||||||
@ -369,10 +369,11 @@ static BOOL d3d9_set_states()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (g_ddraw->d3d9linear)
|
if (g_ddraw->d3d9_filter)
|
||||||
{
|
{
|
||||||
if (SUCCEEDED(IDirect3DDevice9_SetSamplerState(g_d3d9.device, 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR)) &&
|
if (SUCCEEDED(IDirect3DDevice9_SetSamplerState(g_d3d9.device, 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR)) &&
|
||||||
SUCCEEDED(IDirect3DDevice9_SetSamplerState(g_d3d9.device, 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR)) &&
|
SUCCEEDED(IDirect3DDevice9_SetSamplerState(g_d3d9.device, 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR)) &&
|
||||||
|
g_ddraw->d3d9_filter == FILTER_CUBIC &&
|
||||||
g_d3d9.pixel_shader_upscale &&
|
g_d3d9.pixel_shader_upscale &&
|
||||||
(g_ddraw->render.viewport.width != g_ddraw->width || g_ddraw->render.viewport.height != g_ddraw->height) &&
|
(g_ddraw->render.viewport.width != g_ddraw->width || g_ddraw->render.viewport.height != g_ddraw->height) &&
|
||||||
SUCCEEDED(IDirect3DDevice9_SetPixelShader(g_d3d9.device, g_d3d9.pixel_shader_upscale)))
|
SUCCEEDED(IDirect3DDevice9_SetPixelShader(g_d3d9.device, g_d3d9.pixel_shader_upscale)))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user