From e135bf5595d8339024bae529320ce998d1ded1e9 Mon Sep 17 00:00:00 2001 From: olebeck <31539311+olebeck@users.noreply.github.com> Date: Mon, 7 Jul 2025 15:09:27 +0200 Subject: [PATCH] always clear before drawing 2d image --- miniwin/src/d3drm/backends/gxm/renderer.cpp | 6 ++++++ miniwin/src/internal/d3drmrenderer_gxm.h | 1 + 2 files changed, 7 insertions(+) diff --git a/miniwin/src/d3drm/backends/gxm/renderer.cpp b/miniwin/src/d3drm/backends/gxm/renderer.cpp index 779c14b1..a9c77e24 100644 --- a/miniwin/src/d3drm/backends/gxm/renderer.cpp +++ b/miniwin/src/d3drm/backends/gxm/renderer.cpp @@ -1424,6 +1424,7 @@ void GXMRenderer::StartScene() sceGxmSetCullMode(gxm->context, SCE_GXM_CULL_CCW); gxm->sceneStarted = true; this->quadsUsed = 0; + this->cleared = false; sceGxmNotificationWait(&this->vertexNotifications[this->currentVertexBufferIndex]); sceGxmNotificationWait(&this->fragmentNotifications[this->currentFragmentBufferIndex]); @@ -1554,6 +1555,7 @@ void GXMRenderer::Clear(float r, float g, float b) { this->StartScene(); gxm->clear(r, g, b, false); + this->cleared = true; } void GXMRenderer::Flip() @@ -1579,6 +1581,10 @@ void GXMRenderer::Flip() void GXMRenderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) { this->StartScene(); + if(!this->cleared) { + gxm->clear(0,0,0, false); + this->cleared = true; + } #ifdef DEBUG char marker[256]; diff --git a/miniwin/src/internal/d3drmrenderer_gxm.h b/miniwin/src/internal/d3drmrenderer_gxm.h index 1f986384..b1f12a97 100644 --- a/miniwin/src/internal/d3drmrenderer_gxm.h +++ b/miniwin/src/internal/d3drmrenderer_gxm.h @@ -161,6 +161,7 @@ class GXMRenderer : public Direct3DRMRenderer { Vertex2D* quadVertices[GXM_VERTEX_BUFFER_COUNT]; uint16_t* quadIndices; int quadsUsed = 0; + bool cleared = false; SceGxmNotification vertexNotifications[GXM_VERTEX_BUFFER_COUNT]; SceGxmNotification fragmentNotifications[GXM_FRAGMENT_BUFFER_COUNT];