From fccff79a6ad0708fb9b89a538d6b6649d83343cc Mon Sep 17 00:00:00 2001 From: zhenyan121 <3367366583@qq.com> Date: Sat, 13 Dec 2025 18:49:55 +0800 Subject: [PATCH] Change frame control to the scene --- src/graphics/GameRenderer.cpp | 17 ----------------- src/graphics/GameRenderer.h | 4 ---- src/scenes/base/Scene.h | 17 +++++++++++++++++ src/scenes/gameplay/GameScene.cpp | 4 ++-- src/scenes/menu/MainMenuScene.cpp | 20 -------------------- src/scenes/menu/MainMenuScene.h | 3 +-- 6 files changed, 20 insertions(+), 45 deletions(-) diff --git a/src/graphics/GameRenderer.cpp b/src/graphics/GameRenderer.cpp index 810c906..819f735 100644 --- a/src/graphics/GameRenderer.cpp +++ b/src/graphics/GameRenderer.cpp @@ -15,23 +15,6 @@ bool GameRenderer::initialize() { return true; } -void GameRenderer::beginFrame() { - if (!m_renderer) { - std::cout << "ERROR: Renderer is NULL!\n"; - return; - } - // 清屏为白色色背景 - SDL_SetRenderDrawColor(m_renderer, 255, 255, 255, 255); - SDL_RenderClear(m_renderer); - //std::cout << "begin frame\n"; - -} - -void GameRenderer::endFrame() { - // 提交到屏幕 - //std::cout << "end frame\n"; - SDL_RenderPresent(m_renderer); -} void GameRenderer::setBoard(const Board* board) { diff --git a/src/graphics/GameRenderer.h b/src/graphics/GameRenderer.h index d3d434f..07289c1 100644 --- a/src/graphics/GameRenderer.h +++ b/src/graphics/GameRenderer.h @@ -37,10 +37,6 @@ public: // 初始化加载纹理 bool initialize(); - // 帧控制 - void beginFrame(); - void endFrame(); - // 设置棋盘 void setBoard(const Board* board); diff --git a/src/scenes/base/Scene.h b/src/scenes/base/Scene.h index 36d359c..6053d64 100644 --- a/src/scenes/base/Scene.h +++ b/src/scenes/base/Scene.h @@ -67,5 +67,22 @@ protected: UIRenderer* m_uiRenderer; ///< UI 渲染器指针 SDL_Renderer* m_renderer; ///< SDL 渲染器指针 EventCallback m_eventCallback; ///< 场景事件回调函数 + + void beginFrame() { + if (!m_renderer) { + SDL_Log("Renderer is null in beginFrame!"); + return; + } + // 清屏为白色色背景 + SDL_SetRenderDrawColor(m_renderer, 255, 255, 255, 255); + SDL_RenderClear(m_renderer); + //std::cout << "begin frame\n"; + } + + void endFrame() { + // 提交到屏幕 + //std::cout << "end frame\n"; + SDL_RenderPresent(m_renderer); + } }; diff --git a/src/scenes/gameplay/GameScene.cpp b/src/scenes/gameplay/GameScene.cpp index 3a909f0..ce42886 100644 --- a/src/scenes/gameplay/GameScene.cpp +++ b/src/scenes/gameplay/GameScene.cpp @@ -30,13 +30,13 @@ void GameScene::update() { } void GameScene::render() { - m_gameRenderer->beginFrame(); + beginFrame(); m_gameRenderer->drawBackground(); m_gameRenderer->drawBoard(); m_gameRenderer->drawPiece(m_gameSession->getSelectedPiece()); m_uiRenderer->renderUI(m_gameUIManager->getUIRenderData()); - m_gameRenderer->endFrame(); + endFrame(); } void GameScene::handleClick(float screenX, float screenY) { diff --git a/src/scenes/menu/MainMenuScene.cpp b/src/scenes/menu/MainMenuScene.cpp index 242cc33..c6543ff 100644 --- a/src/scenes/menu/MainMenuScene.cpp +++ b/src/scenes/menu/MainMenuScene.cpp @@ -43,26 +43,6 @@ void MainMenuScene::handleClick(float x, float y) { m_mainMenuUIManager->handleClick(x, y); } -void MainMenuScene::beginFrame() { - // 开始帧渲染的逻辑 - if (!m_renderer) { - SDL_Log("ERROR: Renderer is NULL!\n"); - return; - } - // 清屏为白色色背景 - SDL_SetRenderDrawColor(m_renderer, 255, 255, 255, 255); - SDL_RenderClear(m_renderer); - //std::cout << "begin frame\n"; - - -} - -void MainMenuScene::endFrame() { - // 结束帧渲染的逻辑 - // 提交到屏幕 - //std::cout << "end frame\n"; - SDL_RenderPresent(m_renderer); -} void MainMenuScene::renderMousePosition(float x, float y) { m_mainMenuUIManager->UpdateMousePositon(x, y); diff --git a/src/scenes/menu/MainMenuScene.h b/src/scenes/menu/MainMenuScene.h index 9fb8233..ec1507d 100644 --- a/src/scenes/menu/MainMenuScene.h +++ b/src/scenes/menu/MainMenuScene.h @@ -18,6 +18,5 @@ public: private: // 其他私有成员变量和方法 std::unique_ptr m_mainMenuUIManager = nullptr; - void beginFrame(); - void endFrame(); + }; \ No newline at end of file