diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index 20c0b61701..4654ac0553 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -918,10 +918,10 @@ NULL, NULL, NULL, 0); d3d->lpTexture->UnlockRect(0); } - d3dr->SetSamplerState(0, D3DSAMP_MINFILTER, g_settings.video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT); - d3dr->SetSamplerState(0, D3DSAMP_MAGFILTER, g_settings.video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT); - d3dr->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER); - d3dr->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER); + RD3DDevice_SetSamplerState_MinFilter(d3dr, D3DSAMP_MINFILTER, g_settings.video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT); + RD3DDevice_SetSamplerState_MagFilter(d3dr, D3DSAMP_MAGFILTER, g_settings.video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT); + RD3DDevice_SetSamplerState_AddressU(d3dr, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER); + RD3DDevice_SetSamplerState_AddressV(d3dr, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER); #if defined(_XBOX1) d3dr->SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX1); @@ -956,10 +956,10 @@ NULL, NULL, NULL, 0); #endif xdk_d3d_set_viewport(false); - d3dr->SetSamplerState(0, D3DSAMP_MINFILTER, g_settings.video.second_pass_smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT); - d3dr->SetSamplerState(0, D3DSAMP_MAGFILTER, g_settings.video.second_pass_smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT); - d3dr->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER); - d3dr->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER); + RD3DDevice_SetSamplerState_MinFilter(d3dr, D3DSAMP_MINFILTER, g_settings.video.second_pass_smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT); + RD3DDevice_SetSamplerState_MagFilter(d3dr, D3DSAMP_MAGFILTER, g_settings.video.second_pass_smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT); + RD3DDevice_SetSamplerState_AddressU(d3dr, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER); + RD3DDevice_SetSamplerState_AddressV(d3dr, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER); d3dr->SetVertexDeclaration(d3d->v_decl); d3dr->SetStreamSource(0, d3d->vertex_buf, 0, sizeof(DrawVerticeFormats)); d3dr->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); diff --git a/xdk/xdk_defines.h b/xdk/xdk_defines.h index 9908c39179..eca6e9216f 100644 --- a/xdk/xdk_defines.h +++ b/xdk/xdk_defines.h @@ -35,7 +35,15 @@ #define direct3d_create_ctx Direct3DCreate8 #define IDirect3DVertexBuffer IDirect3DVertexBuffer8 -#define SetSamplerState SetTextureStageState +#define SetSamplerState_function(device, sampler, value) \ + D3D__DirtyFlags |= (D3DDIRTYFLAG_TEXTURE_STATE_0 << 0); \ + D3D__TextureState[0][sampler] = value; + +#define RD3DDevice_SetSamplerState_MinFilter(device, sampler, value) SetSamplerState_function(device, sampler, value) +#define RD3DDevice_SetSamplerState_MagFilter(device, sampler, value) SetSamplerState_function(device, sampler, value) +#define RD3DDevice_SetSamplerState_AddressU(device, sampler, value) SetSamplerState_function(device, sampler, value) +#define RD3DDevice_SetSamplerState_AddressV(device, sampler, value) SetSamplerState_function(device, sampler, value) + #define D3DLOCK_NOSYSLOCK (0) #define D3DSAMP_ADDRESSU D3DTSS_ADDRESSU @@ -60,6 +68,11 @@ #define direct3d_create_ctx Direct3DCreate9 #define IDirect3DVertexDeclaration IDirect3DVertexDeclaration9 +#define RD3DDevice_SetSamplerState_MinFilter(device, sampler, value) D3DDevice_SetSamplerState_MinFilter(device, sampler, value) +#define RD3DDevice_SetSamplerState_MagFilter(device, sampler, value) D3DDevice_SetSamplerState_MagFilter(device, sampler, value) +#define RD3DDevice_SetSamplerState_AddressU(device, sampler, value) D3DDevice_SetSamplerState_AddressU_Inline(device, sampler, value) +#define RD3DDevice_SetSamplerState_AddressV(device, sampler, value) D3DDevice_SetSamplerState_AddressV_Inline(device, sampler, value) + #endif #endif