call Reset on 3D renderer object

This commit is contained in:
RSDuck 2023-12-21 21:43:57 +01:00
parent fd3c349735
commit ed650f2b46
2 changed files with 10 additions and 1 deletions

View File

@ -146,6 +146,12 @@ GPU3D::GPU3D(melonDS::NDS& nds, std::unique_ptr<Renderer3D>&& renderer) noexcept
{ {
} }
void GPU3D::SetCurrentRenderer(std::unique_ptr<Renderer3D>&& renderer) noexcept
{
CurrentRenderer = std::move(renderer);
CurrentRenderer->Reset(NDS.GPU);
}
void GPU3D::ResetRenderingState() noexcept void GPU3D::ResetRenderingState() noexcept
{ {
RenderNumPolygons = 0; RenderNumPolygons = 0;
@ -282,6 +288,9 @@ void GPU3D::Reset() noexcept
FlushAttributes = 0; FlushAttributes = 0;
RenderXPos = 0; RenderXPos = 0;
if (CurrentRenderer)
CurrentRenderer->Reset(NDS.GPU);
} }
void GPU3D::DoSavestate(Savestate* file) noexcept void GPU3D::DoSavestate(Savestate* file) noexcept

View File

@ -117,7 +117,7 @@ public:
[[nodiscard]] bool IsRendererAccelerated() const noexcept; [[nodiscard]] bool IsRendererAccelerated() const noexcept;
[[nodiscard]] Renderer3D& GetCurrentRenderer() noexcept { return *CurrentRenderer; } [[nodiscard]] Renderer3D& GetCurrentRenderer() noexcept { return *CurrentRenderer; }
[[nodiscard]] const Renderer3D& GetCurrentRenderer() const noexcept { return *CurrentRenderer; } [[nodiscard]] const Renderer3D& GetCurrentRenderer() const noexcept { return *CurrentRenderer; }
void SetCurrentRenderer(std::unique_ptr<Renderer3D>&& renderer) noexcept { CurrentRenderer = std::move(renderer); } void SetCurrentRenderer(std::unique_ptr<Renderer3D>&& renderer) noexcept;
u8 Read8(u32 addr) noexcept; u8 Read8(u32 addr) noexcept;
u16 Read16(u32 addr) noexcept; u16 Read16(u32 addr) noexcept;