Explorar o código

direct3d: Fix dirty textures failing to update

Even if the texture itself has not changed since last time, the data may have
so we must call UpdateDirtyTexture() to handle that possibility.
Cameron Gutman %!s(int64=6) %!d(string=hai) anos
pai
achega
e681623cb2
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  1. 7 0
      src/render/direct3d/SDL_render_d3d.c

+ 7 - 0
src/render/direct3d/SDL_render_d3d.c

@@ -1127,6 +1127,13 @@ SetDrawState(D3D_RenderData *data, const SDL_RenderCommand *cmd)
         }
 
         data->drawstate.texture = texture;
+    } else if (texture) {
+        D3D_TextureData *texturedata = (D3D_TextureData *) texture->driverdata;
+        UpdateDirtyTexture(data->device, &texturedata->texture);
+        if (texturedata->yuv) {
+            UpdateDirtyTexture(data->device, &texturedata->utexture);
+            UpdateDirtyTexture(data->device, &texturedata->vtexture);
+        }
     }
 
     if (blend != data->drawstate.blend) {