Using WindowManager to begin and end frame

This commit is contained in:
2025-12-19 22:47:18 +08:00
parent c8ab71738a
commit 96b005e2ef
9 changed files with 19 additions and 11 deletions

View File

@@ -68,7 +68,7 @@ protected:
SDL_Renderer* m_renderer; ///< SDL 渲染器指针
EventCallback m_eventCallback; ///< 场景事件回调函数
void beginFrame() {
/*void beginFrame() {
if (!m_renderer) {
SDL_Log("Renderer is null in beginFrame!");
return;
@@ -77,12 +77,12 @@ protected:
SDL_SetRenderDrawColor(m_renderer, 255, 255, 255, 255);
SDL_RenderClear(m_renderer);
//std::cout << "begin frame\n";
}
}*/
void endFrame() {
/*void endFrame() {
// 提交到屏幕
//std::cout << "end frame\n";
SDL_RenderPresent(m_renderer);
}
}*/
};

View File

@@ -125,7 +125,7 @@ private:
std::stack<std::shared_ptr<Scene>> m_scenes; ///< 场景栈,存储场景层级关系(使用 shared_ptr
std::unordered_map<std::string, std::shared_ptr<Scene>> m_sceneCache; ///< 场景缓存,按名字缓存场景以便切换时复用
std::unordered_map<std::string, std::function<std::shared_ptr<Scene>()>> m_sceneFactories; ///< 场景工厂映射,按名字动态创建场景实例
/**
* @brief 获取窗口尺寸的辅助方法
* @return 返回 {宽度, 高度},如果获取失败则返回默认值 {1600, 900}

View File

@@ -33,7 +33,7 @@ void GameScene::update() {
}
void GameScene::render() {
beginFrame();
m_boardRenderer->drawBackground();
m_boardRenderer->drawBoard();
@@ -41,7 +41,7 @@ void GameScene::render() {
m_boardRenderer->drawMovementRange();
m_boardRenderer->renderBlackOverlay();
m_uiRenderer->renderUI(m_gameUIManager->getUIRenderData());
endFrame();
}
void GameScene::handleClick(float screenX, float screenY) {

View File

@@ -31,11 +31,11 @@ void MainMenuScene::update() {
}
void MainMenuScene::render() {
beginFrame();
// 渲染场景内容
const UIRenderData& uiRenderData = m_mainMenuUIManager->getUIRenderData();
m_uiRenderer->renderUI(uiRenderData);
endFrame();
}
void MainMenuScene::handleClick(float x, float y) {