[Commits] SDL: Fixed bug 1878 - Scaled texture draws with filtering produc...

libsdl.org revision control commits-owner at libsdl.org
Fri Dec 8 11:10:35 PST 2017


details:   https://hg.libsdl.org/SDL/rev/0c134b939fd9
changeset: 11737:0c134b939fd9
user:      Sam Lantinga <slouken at libsdl.org>
date:      Fri Dec 08 11:09:05 2017 -0800
description:
Fixed bug 1878 - Scaled texture draws with filtering produce wrapping artifacts.

Yuri K. Schlesner

When using texture filtering, there are filtering artifacts visible on the edges of scaled textures, where the texture filtering pulls in texels from the other side of the texture. Using clamping texture modes wouldn't completely fix this since source rectangles don't need to cover the whole texture. (See screenshot attached in next post.)

The opengl driver uses clamping on textures and so avoid this at least in the cases where the source rect is the whole texture. The direct3d driver does not and so has problems in every case. I'm not sure if it can actually completely be fixed, but at least enabling clamping for direct3d would be one step in the right direction.

diffstat:

 src/render/direct3d/SDL_render_d3d.c |  4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diffs (14 lines):

diff -r e54b6d8ffca8 -r 0c134b939fd9 src/render/direct3d/SDL_render_d3d.c
--- a/src/render/direct3d/SDL_render_d3d.c	Fri Dec 08 00:49:35 2017 -0500
+++ b/src/render/direct3d/SDL_render_d3d.c	Fri Dec 08 11:09:05 2017 -0800
@@ -1412,6 +1412,10 @@
                                          texturedata->scaleMode);
         IDirect3DDevice9_SetSamplerState(data->device, index, D3DSAMP_MAGFILTER,
                                          texturedata->scaleMode);
+        IDirect3DDevice9_SetSamplerState(data->device, index, D3DSAMP_ADDRESSU,
+                                         D3DTADDRESS_CLAMP);
+        IDirect3DDevice9_SetSamplerState(data->device, index, D3DSAMP_ADDRESSV,
+                                         D3DTADDRESS_CLAMP);
         data->scaleMode[index] = texturedata->scaleMode;
     }
 }


More information about the commits mailing list