Change frame control to the scene

This commit is contained in:
2025-12-13 18:49:55 +08:00
parent 3d73994360
commit fccff79a6a
6 changed files with 20 additions and 45 deletions

View File

@@ -15,23 +15,6 @@ bool GameRenderer::initialize() {
return true; 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) { void GameRenderer::setBoard(const Board* board) {

View File

@@ -37,10 +37,6 @@ public:
// 初始化加载纹理 // 初始化加载纹理
bool initialize(); bool initialize();
// 帧控制
void beginFrame();
void endFrame();
// 设置棋盘 // 设置棋盘
void setBoard(const Board* board); void setBoard(const Board* board);

View File

@@ -67,5 +67,22 @@ protected:
UIRenderer* m_uiRenderer; ///< UI 渲染器指针 UIRenderer* m_uiRenderer; ///< UI 渲染器指针
SDL_Renderer* m_renderer; ///< SDL 渲染器指针 SDL_Renderer* m_renderer; ///< SDL 渲染器指针
EventCallback m_eventCallback; ///< 场景事件回调函数 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);
}
}; };

View File

@@ -30,13 +30,13 @@ void GameScene::update() {
} }
void GameScene::render() { void GameScene::render() {
m_gameRenderer->beginFrame(); beginFrame();
m_gameRenderer->drawBackground(); m_gameRenderer->drawBackground();
m_gameRenderer->drawBoard(); m_gameRenderer->drawBoard();
m_gameRenderer->drawPiece(m_gameSession->getSelectedPiece()); m_gameRenderer->drawPiece(m_gameSession->getSelectedPiece());
m_uiRenderer->renderUI(m_gameUIManager->getUIRenderData()); m_uiRenderer->renderUI(m_gameUIManager->getUIRenderData());
m_gameRenderer->endFrame(); endFrame();
} }
void GameScene::handleClick(float screenX, float screenY) { void GameScene::handleClick(float screenX, float screenY) {

View File

@@ -43,26 +43,6 @@ void MainMenuScene::handleClick(float x, float y) {
m_mainMenuUIManager->handleClick(x, 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) { void MainMenuScene::renderMousePosition(float x, float y) {
m_mainMenuUIManager->UpdateMousePositon(x, y); m_mainMenuUIManager->UpdateMousePositon(x, y);

View File

@@ -18,6 +18,5 @@ public:
private: private:
// 其他私有成员变量和方法 // 其他私有成员变量和方法
std::unique_ptr<MainMenuUIManager> m_mainMenuUIManager = nullptr; std::unique_ptr<MainMenuUIManager> m_mainMenuUIManager = nullptr;
void beginFrame();
void endFrame();
}; };