diff --git a/README.md b/README.md index 2deb948..9ed5648 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ mindmap 触摸 Touch 输入码 InputCodes 渲染系统 - 渲染后端 RenderBackend + 渲染后端 Renderer OpenGL 实现 GLRenderer GLShader diff --git a/examples/collision_demo/main.cpp b/examples/collision_demo/main.cpp index 7adad57..3d382a4 100644 --- a/examples/collision_demo/main.cpp +++ b/examples/collision_demo/main.cpp @@ -23,7 +23,7 @@ public: height_); } - void onRender(RenderBackend &renderer) override { + void onRender(Renderer &renderer) override { Vec2 position = pos(); // 绘制填充矩形 diff --git a/examples/flappy_bird/BaseScene.cpp b/examples/flappy_bird/BaseScene.cpp index aab1af3..2f9dfdb 100644 --- a/examples/flappy_bird/BaseScene.cpp +++ b/examples/flappy_bird/BaseScene.cpp @@ -21,8 +21,8 @@ void BaseScene::onEnter() { void BaseScene::updateViewport() { auto &app = extra2d::Application::instance(); - float windowWidth = static_cast(app.window().getWidth()); - float windowHeight = static_cast(app.window().getHeight()); + float windowWidth = static_cast(app.window().width()); + float windowHeight = static_cast(app.window().height()); // 计算游戏内容在窗口中的居中位置 // 保持游戏原始宽高比,进行"黑边"适配 @@ -48,11 +48,11 @@ void BaseScene::updateViewport() { setCamera(camera); } -void BaseScene::onRender(extra2d::RenderBackend &renderer) { +void BaseScene::onRender(extra2d::Renderer &renderer) { // 检查窗口大小是否改变,如果改变则更新视口 auto &app = extra2d::Application::instance(); - float currentWindowWidth = static_cast(app.window().getWidth()); - float currentWindowHeight = static_cast(app.window().getHeight()); + float currentWindowWidth = static_cast(app.window().width()); + float currentWindowHeight = static_cast(app.window().height()); // 如果窗口大小改变,重新计算视口 float expectedWidth = scaledGameWidth_ + viewportOffsetX_ * 2.0f; @@ -75,7 +75,7 @@ void BaseScene::onRender(extra2d::RenderBackend &renderer) { extra2d::Scene::onRender(renderer); } -void BaseScene::renderContent(extra2d::RenderBackend &renderer) { +void BaseScene::renderContent(extra2d::Renderer &renderer) { // 如果视口参数未初始化(onEnter 还没被调用),先初始化 if (scaledGameWidth_ <= 0.0f || scaledGameHeight_ <= 0.0f) { updateViewport(); @@ -83,8 +83,8 @@ void BaseScene::renderContent(extra2d::RenderBackend &renderer) { // 检查窗口大小是否改变 auto &app = extra2d::Application::instance(); - float currentWindowWidth = static_cast(app.window().getWidth()); - float currentWindowHeight = static_cast(app.window().getHeight()); + float currentWindowWidth = static_cast(app.window().width()); + float currentWindowHeight = static_cast(app.window().height()); float expectedWidth = scaledGameWidth_ + viewportOffsetX_ * 2.0f; float expectedHeight = scaledGameHeight_ + viewportOffsetY_ * 2.0f; diff --git a/examples/flappy_bird/BaseScene.h b/examples/flappy_bird/BaseScene.h index a1634c0..31689e8 100644 --- a/examples/flappy_bird/BaseScene.h +++ b/examples/flappy_bird/BaseScene.h @@ -33,13 +33,13 @@ public: * @brief 渲染时调用,设置居中视口 * @param renderer 渲染后端 */ - void onRender(extra2d::RenderBackend &renderer) override; + void onRender(extra2d::Renderer &renderer) override; /** * @brief 渲染场景内容,确保视口正确设置 * @param renderer 渲染后端 */ - void renderContent(extra2d::RenderBackend &renderer) override; + void renderContent(extra2d::Renderer &renderer) override; protected: /** diff --git a/examples/flappy_bird/ResLoader.cpp b/examples/flappy_bird/ResLoader.cpp index c233ed8..22d466c 100644 --- a/examples/flappy_bird/ResLoader.cpp +++ b/examples/flappy_bird/ResLoader.cpp @@ -73,8 +73,8 @@ ResLoader::getKeyFrame(const std::string &name) { // 检查纹理尺寸 if (atlasTexture_) { - E2D_LOG_INFO("图集纹理尺寸: {}x{}", atlasTexture_->getWidth(), - atlasTexture_->getHeight()); + E2D_LOG_INFO("图集纹理尺寸: {}x{}", atlasTexture_->width(), + atlasTexture_->height()); } return extra2d::makePtr( diff --git a/examples/flappy_bird/bird.cpp b/examples/flappy_bird/bird.cpp index e028939..785e67f 100644 --- a/examples/flappy_bird/bird.cpp +++ b/examples/flappy_bird/bird.cpp @@ -89,7 +89,7 @@ void Bird::onUpdate(float dt) { } } -void Bird::onRender(extra2d::RenderBackend &renderer) { +void Bird::onRender(extra2d::Renderer &renderer) { // 精灵会自动渲染,这里只需要处理旋转和偏移 if (sprite_) { sprite_->setRotation(rotation_); diff --git a/examples/flappy_bird/bird.h b/examples/flappy_bird/bird.h index 7676621..43f4377 100644 --- a/examples/flappy_bird/bird.h +++ b/examples/flappy_bird/bird.h @@ -45,7 +45,7 @@ public: * @brief 渲染小鸟 * @param renderer 渲染后端 */ - void onRender(extra2d::RenderBackend &renderer) override; + void onRender(extra2d::Renderer &renderer) override; /** * @brief 进入场景时调用 diff --git a/examples/flappy_bird/ground.cpp b/examples/flappy_bird/ground.cpp index caa6f8b..6c30c8d 100644 --- a/examples/flappy_bird/ground.cpp +++ b/examples/flappy_bird/ground.cpp @@ -3,75 +3,77 @@ // ============================================================================ #include "Ground.h" -#include "ResLoader.h" #include "BaseScene.h" +#include "ResLoader.h" + namespace flappybird { Ground::Ground() { - moving_ = true; + moving_ = true; - // 使用游戏逻辑高度,而不是窗口高度 - float screenHeight = GAME_HEIGHT; + // 使用游戏逻辑高度,而不是窗口高度 + float screenHeight = GAME_HEIGHT; - // 获取地面纹理帧 - auto landFrame = ResLoader::getKeyFrame("land"); - if (!landFrame) return; + // 获取地面纹理帧 + auto landFrame = ResLoader::getKeyFrame("land"); + if (!landFrame) + return; - // 获取地面纹理和矩形 - auto texture = landFrame->getTexture(); - auto rect = landFrame->getRect(); - float groundWidth = rect.size.width; - float groundHeight = rect.size.height; + // 获取地面纹理和矩形 + auto texture = landFrame->getTexture(); + auto rect = landFrame->getRect(); + float groundWidth = rect.size.width; + float groundHeight = rect.size.height; - // 创建第一块地面 - ground1_ = extra2d::Sprite::create(texture, rect); - ground1_->setAnchor(extra2d::Vec2(0.0f, 1.0f)); // 锚点设在左下角 - ground1_->setPosition(extra2d::Vec2(0.0f, screenHeight)); - addChild(ground1_); + // 创建第一块地面 + ground1_ = extra2d::Sprite::create(texture, rect); + ground1_->setAnchor(extra2d::Vec2(0.0f, 1.0f)); // 锚点设在左下角 + ground1_->setPosition(extra2d::Vec2(0.0f, screenHeight)); + addChild(ground1_); - // 创建第二块地面,紧挨在第一块右边 - ground2_ = extra2d::Sprite::create(texture, rect); - ground2_->setAnchor(extra2d::Vec2(0.0f, 1.0f)); - ground2_->setPosition(extra2d::Vec2(groundWidth - 1.0f, screenHeight)); - addChild(ground2_); + // 创建第二块地面,紧挨在第一块右边 + ground2_ = extra2d::Sprite::create(texture, rect); + ground2_->setAnchor(extra2d::Vec2(0.0f, 1.0f)); + ground2_->setPosition(extra2d::Vec2(groundWidth - 1.0f, screenHeight)); + addChild(ground2_); } void Ground::onUpdate(float dt) { - extra2d::Node::onUpdate(dt); + extra2d::Node::onUpdate(dt); - if (!moving_) return; - if (!ground1_ || !ground2_) return; + if (!moving_) + return; + if (!ground1_ || !ground2_) + return; - // 获取地面宽度(从纹理矩形获取) - float groundWidth = ground1_->getTextureRect().size.width; + // 获取地面宽度(从纹理矩形获取) + float groundWidth = ground1_->getTextureRect().size.width; - // 移动两块地面 - extra2d::Vec2 pos1 = ground1_->pos(); - extra2d::Vec2 pos2 = ground2_->pos(); + // 移动两块地面 + extra2d::Vec2 pos1 = ground1_->pos(); + extra2d::Vec2 pos2 = ground2_->pos(); - pos1.x -= speed * dt; - pos2.x -= speed * dt; + pos1.x -= speed * dt; + pos2.x -= speed * dt; - // 当地面完全移出屏幕左侧时,重置到右侧 - if (pos1.x <= -groundWidth) { - pos1.x = pos2.x + groundWidth - 1.0f; - } - if (pos2.x <= -groundWidth) { - pos2.x = pos1.x + groundWidth - 1.0f; - } + // 当地面完全移出屏幕左侧时,重置到右侧 + if (pos1.x <= -groundWidth) { + pos1.x = pos2.x + groundWidth - 1.0f; + } + if (pos2.x <= -groundWidth) { + pos2.x = pos1.x + groundWidth - 1.0f; + } - ground1_->setPosition(pos1); - ground2_->setPosition(pos2); + ground1_->setPosition(pos1); + ground2_->setPosition(pos2); } -void Ground::stop() { - moving_ = false; -} +void Ground::stop() { moving_ = false; } -float Ground::getHeight() const { - auto landFrame = ResLoader::getKeyFrame("land"); - return landFrame ? landFrame->getRect().size.height : 112.0f; +float Ground::height() const { + auto landFrame = ResLoader::getKeyFrame("land"); + return landFrame ? landFrame->getRect().size.height : 112.0f; } } // namespace flappybird diff --git a/examples/flappy_bird/ground.h b/examples/flappy_bird/ground.h index 35791c0..7cad090 100644 --- a/examples/flappy_bird/ground.h +++ b/examples/flappy_bird/ground.h @@ -15,34 +15,34 @@ namespace flappybird { */ class Ground : public extra2d::Node { public: - /** - * @brief 构造函数 - */ - Ground(); + /** + * @brief 构造函数 + */ + Ground(); - /** - * @brief 每帧更新 - * @param dt 时间间隔(秒) - */ - void onUpdate(float dt) override; + /** + * @brief 每帧更新 + * @param dt 时间间隔(秒) + */ + void onUpdate(float dt) override; - /** - * @brief 停止地面滚动 - */ - void stop(); + /** + * @brief 停止地面滚动 + */ + void stop(); - /** - * @brief 获取地面高度 - * @return 地面高度 - */ - float getHeight() const; + /** + * @brief 获取地面高度 + * @return 地面高度 + */ + float height() const; private: - extra2d::Ptr ground1_; // 第一块地面 - extra2d::Ptr ground2_; // 第二块地面 - - static constexpr float speed = 120.0f; // 滚动速度(像素/秒) - bool moving_ = true; // 是否正在滚动 + extra2d::Ptr ground1_; // 第一块地面 + extra2d::Ptr ground2_; // 第二块地面 + + static constexpr float speed = 120.0f; // 滚动速度(像素/秒) + bool moving_ = true; // 是否正在滚动 }; } // namespace flappybird diff --git a/examples/push_box/BaseScene.cpp b/examples/push_box/BaseScene.cpp index 6a3a8e4..41834ad 100644 --- a/examples/push_box/BaseScene.cpp +++ b/examples/push_box/BaseScene.cpp @@ -24,8 +24,8 @@ void BaseScene::onEnter() { */ void BaseScene::updateViewport() { auto &app = extra2d::Application::instance(); - float windowWidth = static_cast(app.window().getWidth()); - float windowHeight = static_cast(app.window().getHeight()); + float windowWidth = static_cast(app.window().width()); + float windowHeight = static_cast(app.window().height()); // 计算游戏内容在窗口中的居中位置 // 保持游戏原始宽高比,进行"黑边"适配 @@ -55,11 +55,11 @@ void BaseScene::updateViewport() { * @brief 渲染时调用,设置居中视口 * @param renderer 渲染后端 */ -void BaseScene::onRender(extra2d::RenderBackend &renderer) { +void BaseScene::onRender(extra2d::Renderer &renderer) { // 检查窗口大小是否改变,如果改变则更新视口 auto &app = extra2d::Application::instance(); - float currentWindowWidth = static_cast(app.window().getWidth()); - float currentWindowHeight = static_cast(app.window().getHeight()); + float currentWindowWidth = static_cast(app.window().width()); + float currentWindowHeight = static_cast(app.window().height()); // 如果窗口大小改变,重新计算视口 float expectedWidth = scaledGameWidth_ + viewportOffsetX_ * 2.0f; @@ -86,7 +86,7 @@ void BaseScene::onRender(extra2d::RenderBackend &renderer) { * @brief 渲染场景内容,确保视口正确设置 * @param renderer 渲染后端 */ -void BaseScene::renderContent(extra2d::RenderBackend &renderer) { +void BaseScene::renderContent(extra2d::Renderer &renderer) { // 如果视口参数未初始化(onEnter 还没被调用),先初始化 if (scaledGameWidth_ <= 0.0f || scaledGameHeight_ <= 0.0f) { updateViewport(); @@ -94,8 +94,8 @@ void BaseScene::renderContent(extra2d::RenderBackend &renderer) { // 检查窗口大小是否改变 auto &app = extra2d::Application::instance(); - float currentWindowWidth = static_cast(app.window().getWidth()); - float currentWindowHeight = static_cast(app.window().getHeight()); + float currentWindowWidth = static_cast(app.window().width()); + float currentWindowHeight = static_cast(app.window().height()); float expectedWidth = scaledGameWidth_ + viewportOffsetX_ * 2.0f; float expectedHeight = scaledGameHeight_ + viewportOffsetY_ * 2.0f; diff --git a/examples/push_box/BaseScene.h b/examples/push_box/BaseScene.h index 4efce5c..f4b3892 100644 --- a/examples/push_box/BaseScene.h +++ b/examples/push_box/BaseScene.h @@ -19,39 +19,39 @@ static constexpr float GAME_HEIGHT = 480.0f; */ class BaseScene : public extra2d::Scene { public: - /** - * @brief 构造函数 - */ - BaseScene(); + /** + * @brief 构造函数 + */ + BaseScene(); - /** - * @brief 场景进入时调用 - */ - void onEnter() override; + /** + * @brief 场景进入时调用 + */ + void onEnter() override; - /** - * @brief 渲染时调用,设置居中视口 - * @param renderer 渲染后端 - */ - void onRender(extra2d::RenderBackend &renderer) override; + /** + * @brief 渲染时调用,设置居中视口 + * @param renderer 渲染后端 + */ + void onRender(extra2d::Renderer &renderer) override; - /** - * @brief 渲染场景内容,确保视口正确设置 - * @param renderer 渲染后端 - */ - void renderContent(extra2d::RenderBackend &renderer) override; + /** + * @brief 渲染场景内容,确保视口正确设置 + * @param renderer 渲染后端 + */ + void renderContent(extra2d::Renderer &renderer) override; protected: - /** - * @brief 更新视口计算,使游戏内容在窗口中居中显示 - */ - void updateViewport(); + /** + * @brief 更新视口计算,使游戏内容在窗口中居中显示 + */ + void updateViewport(); - // 视口适配参数(用于在窗口中居中显示游戏内容) - float scaledGameWidth_ = 0.0f; // 缩放后的游戏宽度 - float scaledGameHeight_ = 0.0f; // 缩放后的游戏高度 - float viewportOffsetX_ = 0.0f; // 视口水平偏移 - float viewportOffsetY_ = 0.0f; // 视口垂直偏移 + // 视口适配参数(用于在窗口中居中显示游戏内容) + float scaledGameWidth_ = 0.0f; // 缩放后的游戏宽度 + float scaledGameHeight_ = 0.0f; // 缩放后的游戏高度 + float viewportOffsetX_ = 0.0f; // 视口水平偏移 + float viewportOffsetY_ = 0.0f; // 视口垂直偏移 }; } // namespace pushbox diff --git a/examples/push_box/PlayScene.cpp b/examples/push_box/PlayScene.cpp index 841bf4e..6ec7e6d 100644 --- a/examples/push_box/PlayScene.cpp +++ b/examples/push_box/PlayScene.cpp @@ -238,8 +238,8 @@ void PlayScene::executeMenuItem() { void PlayScene::flush() { mapLayer_->removeAllChildren(); - int tileW = texFloor_ ? texFloor_->getWidth() : 32; - int tileH = texFloor_ ? texFloor_->getHeight() : 32; + int tileW = texFloor_ ? texFloor_->width() : 32; + int tileH = texFloor_ ? texFloor_->height() : 32; // 使用游戏逻辑分辨率 float gameWidth = GAME_WIDTH; @@ -298,7 +298,7 @@ void PlayScene::flush() { void PlayScene::setLevel(int level) { g_CurrentLevel = level; saveCurrentLevel(g_CurrentLevel); - + // 清空移动历史(智能指针自动回收到对象池) while (!moveHistory_.empty()) { moveHistory_.pop(); @@ -368,7 +368,8 @@ void PlayScene::move(int dx, int dy, int direct) { } // 使用对象池创建移动记录(自动管理内存) - auto record = E2D_MAKE_POOLED(MoveRecord, map_.roleX, map_.roleY, targetX, targetY, false); + auto record = E2D_MAKE_POOLED(MoveRecord, map_.roleX, map_.roleY, targetX, + targetY, false); if (map_.value[targetY][targetX].type == TYPE::Ground) { g_Pushing = false; @@ -480,7 +481,7 @@ void PlayScene::undoMove() { // record 智能指针离开作用域后自动回收到对象池 setStep(step_ - 1); flush(); - + E2D_LOG_INFO("Undo move, step: {}", step_); } diff --git a/examples/push_box/StartScene.cpp b/examples/push_box/StartScene.cpp index 36cf601..bb3f054 100644 --- a/examples/push_box/StartScene.cpp +++ b/examples/push_box/StartScene.cpp @@ -38,8 +38,8 @@ void StartScene::onEnter() { auto bgTex = resources.loadTexture("assets/images/start.jpg"); if (bgTex) { auto background = extra2d::Sprite::create(bgTex); - float bgWidth = static_cast(bgTex->getWidth()); - float bgHeight = static_cast(bgTex->getHeight()); + float bgWidth = static_cast(bgTex->width()); + float bgHeight = static_cast(bgTex->height()); float offsetX = (screenW - bgWidth) / 2.0f; float offsetY = (screenH - bgHeight) / 2.0f; diff --git a/examples/push_box/SuccessScene.cpp b/examples/push_box/SuccessScene.cpp index 828821d..c8b9401 100644 --- a/examples/push_box/SuccessScene.cpp +++ b/examples/push_box/SuccessScene.cpp @@ -9,73 +9,73 @@ namespace pushbox { SuccessScene::SuccessScene() : BaseScene() { - // BaseScene 已处理视口设置 + // BaseScene 已处理视口设置 } /** * @brief 加载菜单字体 */ static extra2d::Ptr loadMenuFont() { - auto& resources = extra2d::Application::instance().resources(); - auto font = resources.loadFont("assets/font.ttf", 28); - return font; + auto &resources = extra2d::Application::instance().resources(); + auto font = resources.loadFont("assets/font.ttf", 28); + return font; } void SuccessScene::onEnter() { - BaseScene::onEnter(); + BaseScene::onEnter(); - auto& app = extra2d::Application::instance(); - auto& resources = app.resources(); + auto &app = extra2d::Application::instance(); + auto &resources = app.resources(); - if (children().empty()) { - // 使用游戏逻辑分辨率 - float screenW = GAME_WIDTH; - float screenH = GAME_HEIGHT; + if (children().empty()) { + // 使用游戏逻辑分辨率 + float screenW = GAME_WIDTH; + float screenH = GAME_HEIGHT; - auto bgTex = resources.loadTexture("assets/images/success.jpg"); - if (bgTex) { - auto background = extra2d::Sprite::create(bgTex); - float bgWidth = static_cast(bgTex->getWidth()); - float bgHeight = static_cast(bgTex->getHeight()); - float offsetX = (screenW - bgWidth) / 2.0f; - float offsetY = (screenH - bgHeight) / 2.0f; - - background->setAnchor(0.0f, 0.0f); - background->setPosition(offsetX, offsetY); - addChild(background); - - float centerX = screenW / 2.0f; - - auto font = loadMenuFont(); - if (font) { - // 创建按钮文本(仅显示,不响应鼠标) - auto backText = extra2d::Text::create("回主菜单", font); - backText->setPosition(centerX, offsetY + 350.0f); - backText->setTextColor(extra2d::Colors::Black); - addChild(backText); + auto bgTex = resources.loadTexture("assets/images/success.jpg"); + if (bgTex) { + auto background = extra2d::Sprite::create(bgTex); + float bgWidth = static_cast(bgTex->width()); + float bgHeight = static_cast(bgTex->height()); + float offsetX = (screenW - bgWidth) / 2.0f; + float offsetY = (screenH - bgHeight) / 2.0f; - // 创建选择指示器(箭头) - selectorText_ = extra2d::Text::create(">", font); - selectorText_->setTextColor(extra2d::Colors::Red); - selectorText_->setPosition(centerX - 80.0f, offsetY + 350.0f); - addChild(selectorText_); - } - } + background->setAnchor(0.0f, 0.0f); + background->setPosition(offsetX, offsetY); + addChild(background); + + float centerX = screenW / 2.0f; + + auto font = loadMenuFont(); + if (font) { + // 创建按钮文本(仅显示,不响应鼠标) + auto backText = extra2d::Text::create("回主菜单", font); + backText->setPosition(centerX, offsetY + 350.0f); + backText->setTextColor(extra2d::Colors::Black); + addChild(backText); + + // 创建选择指示器(箭头) + selectorText_ = extra2d::Text::create(">", font); + selectorText_->setTextColor(extra2d::Colors::Red); + selectorText_->setPosition(centerX - 80.0f, offsetY + 350.0f); + addChild(selectorText_); + } } + } } void SuccessScene::onUpdate(float dt) { - BaseScene::onUpdate(dt); + BaseScene::onUpdate(dt); - auto& app = extra2d::Application::instance(); - auto& input = app.input(); + auto &app = extra2d::Application::instance(); + auto &input = app.input(); - // A键确认返回主菜单 - if (input.isButtonPressed(extra2d::GamepadButton::A)) { - auto& scenes = extra2d::Application::instance().scenes(); - scenes.popScene(extra2d::TransitionType::Fade, 0.5f); - scenes.popScene(extra2d::TransitionType::Fade, 0.5f); - } + // A键确认返回主菜单 + if (input.isButtonPressed(extra2d::GamepadButton::A)) { + auto &scenes = extra2d::Application::instance().scenes(); + scenes.popScene(extra2d::TransitionType::Fade, 0.5f); + scenes.popScene(extra2d::TransitionType::Fade, 0.5f); + } } } // namespace pushbox diff --git a/examples/spatial_index_demo/main.cpp b/examples/spatial_index_demo/main.cpp index e339864..b366d48 100644 --- a/examples/spatial_index_demo/main.cpp +++ b/examples/spatial_index_demo/main.cpp @@ -60,7 +60,7 @@ public: setPosition(position); } - void onRender(RenderBackend &renderer) override { + void onRender(Renderer &renderer) override { Vec2 position = pos(); // 碰撞时变红色 @@ -175,7 +175,7 @@ public: } } - void onRender(RenderBackend &renderer) override { + void onRender(Renderer &renderer) override { auto renderStart = std::chrono::high_resolution_clock::now(); Scene::onRender(renderer); @@ -460,7 +460,7 @@ private: /** * @brief 绘制图例方块 */ - void drawLegend(RenderBackend &renderer) { + void drawLegend(Renderer &renderer) { float legendX = screenWidth_ - 200.0f; float legendY = 20.0f + 25.0f; // 在标题下方 diff --git a/include/animation/sprite_frame_cache.h b/include/animation/sprite_frame_cache.h index 4631b3c..db66ec4 100644 --- a/include/animation/sprite_frame_cache.h +++ b/include/animation/sprite_frame_cache.h @@ -2,11 +2,11 @@ #include #include -#include -#include #include +#include #include #include +#include namespace extra2d { @@ -56,8 +56,8 @@ public: if (!texture) return; - int texW = texture->getWidth(); - int texH = texture->getHeight(); + int texW = texture->width(); + int texH = texture->height(); int usableW = texW - 2 * margin; int usableH = texH - 2 * margin; int cols = (usableW + spacing) / (frameWidth + spacing); @@ -112,8 +112,8 @@ public: return nullptr; // 默认整张纹理作为一帧(index=0),或用整张纹理 - Rect rect(0.0f, 0.0f, static_cast(texture->getWidth()), - static_cast(texture->getHeight())); + Rect rect(0.0f, 0.0f, static_cast(texture->width()), + static_cast(texture->height())); auto frame = SpriteFrame::create(texture, rect); frame->setName(key); @@ -172,21 +172,21 @@ private: // 使用 ResourceManager 的纹理缓存机制 // 这样可以享受 LRU 缓存、自动清理和缓存统计等功能 auto &resources = ResourceManager::getInstance(); - + // 先检查缓存中是否已有该纹理 auto texture = resources.getTexture(filepath); if (texture) { E2D_TRACE("SpriteFrameCache: 使用缓存纹理: {}", filepath); return texture; } - + // 缓存未命中,通过 ResourceManager 加载 texture = resources.loadTexture(filepath); if (!texture) { E2D_ERROR("SpriteFrameCache: 加载纹理失败: {}", filepath); return nullptr; } - + E2D_TRACE("SpriteFrameCache: 加载新纹理: {}", filepath); return texture; } diff --git a/include/app/application.h b/include/app/application.h index d549492..c3c48fc 100644 --- a/include/app/application.h +++ b/include/app/application.h @@ -3,8 +3,9 @@ #include #include #include -#include #include +#include + namespace extra2d { @@ -22,11 +23,7 @@ class Camera; // Application 配置 // ============================================================================ -enum class PlatformType { - Auto = 0, - PC, - Switch -}; +enum class PlatformType { Auto = 0, PC, Switch }; struct AppConfig { std::string title = "Easy2D Application"; @@ -36,12 +33,12 @@ struct AppConfig { bool resizable = true; bool vsync = true; int fpsLimit = 0; - BackendType renderBackend = BackendType::OpenGL; + BackendType Renderer = BackendType::OpenGL; int msaaSamples = 0; PlatformType platform = PlatformType::Auto; // 窗口高级配置 - bool enableCursors = true; // 是否启用光标 - bool enableDpiScale = false; // 是否启用DPI缩放 + bool enableCursors = true; // 是否启用光标 + bool enableDpiScale = false; // 是否启用DPI缩放 }; // ============================================================================ @@ -76,7 +73,7 @@ public: // 子系统访问 // ------------------------------------------------------------------------ Window &window() { return *window_; } - RenderBackend &renderer() { return *renderer_; } + Renderer &renderer() { return *renderer_; } Input &input(); AudioEngine &audio(); SceneManager &scenes(); @@ -90,7 +87,8 @@ public: // 便捷方法 // ------------------------------------------------------------------------ void enterScene(Ptr scene); - void enterScene(Ptr scene, Ptr transitionScene); + void enterScene(Ptr scene, + Ptr transitionScene); float deltaTime() const { return deltaTime_; } float totalTime() const { return totalTime_; } @@ -113,7 +111,7 @@ private: // 子系统 UniquePtr window_; - UniquePtr renderer_; + UniquePtr renderer_; UniquePtr sceneManager_; UniquePtr resourceManager_; UniquePtr timerManager_; diff --git a/include/graphics/alpha_mask.h b/include/graphics/alpha_mask.h index 131f357..ee220b4 100644 --- a/include/graphics/alpha_mask.h +++ b/include/graphics/alpha_mask.h @@ -28,8 +28,8 @@ public: bool isValid(int x, int y) const; /// 获取遮罩尺寸 - int getWidth() const { return width_; } - int getHeight() const { return height_; } + int width() const { return width_; } + int height() const { return height_; } Size size() const { return Size(static_cast(width_), static_cast(height_)); } diff --git a/include/graphics/opengl/gl_renderer.h b/include/graphics/opengl/gl_renderer.h index edd7459..731f970 100644 --- a/include/graphics/opengl/gl_renderer.h +++ b/include/graphics/opengl/gl_renderer.h @@ -15,12 +15,12 @@ class Window; // ============================================================================ // OpenGL 渲染器实现 // ============================================================================ -class GLRenderer : public RenderBackend { +class GLRenderer : public Renderer { public: GLRenderer(); ~GLRenderer() override; - // RenderBackend 接口实现 + // Renderer 接口实现 bool init(Window *window) override; void shutdown() override; diff --git a/include/graphics/opengl/gl_texture.h b/include/graphics/opengl/gl_texture.h index f04da31..570823c 100644 --- a/include/graphics/opengl/gl_texture.h +++ b/include/graphics/opengl/gl_texture.h @@ -3,7 +3,6 @@ #include #include - #include #include @@ -21,8 +20,8 @@ public: ~GLTexture(); // Texture 接口实现 - int getWidth() const override { return width_; } - int getHeight() const override { return height_; } + int width() const override { return width_; } + int height() const override { return height_; } Size size() const override { return Size(static_cast(width_), static_cast(height_)); } diff --git a/include/graphics/render_backend.h b/include/graphics/render_backend.h index ddfc42f..556bfe2 100644 --- a/include/graphics/render_backend.h +++ b/include/graphics/render_backend.h @@ -37,9 +37,9 @@ enum class BlendMode { // ============================================================================ // 渲染后端抽象接口 // ============================================================================ -class RenderBackend { +class Renderer { public: - virtual ~RenderBackend() = default; + virtual ~Renderer() = default; // ------------------------------------------------------------------------ // 生命周期 @@ -132,7 +132,7 @@ public: // ------------------------------------------------------------------------ // 工厂方法 // ------------------------------------------------------------------------ - static UniquePtr create(BackendType type); + static UniquePtr create(BackendType type); }; } // namespace extra2d diff --git a/include/graphics/render_target.h b/include/graphics/render_target.h index 45b3394..88b15f0 100644 --- a/include/graphics/render_target.h +++ b/include/graphics/render_target.h @@ -76,8 +76,8 @@ public: // 尺寸和格式 // ------------------------------------------------------------------------ - int getWidth() const { return width_; } - int getHeight() const { return height_; } + int width() const { return width_; } + int height() const { return height_; } Vec2 size() const { return Vec2(static_cast(width_), static_cast(height_)); } diff --git a/include/graphics/texture.h b/include/graphics/texture.h index b372505..45b2fed 100644 --- a/include/graphics/texture.h +++ b/include/graphics/texture.h @@ -3,7 +3,6 @@ #include #include - namespace extra2d { // ============================================================================ @@ -39,8 +38,8 @@ public: virtual ~Texture() = default; // 获取尺寸 - virtual int getWidth() const = 0; - virtual int getHeight() const = 0; + virtual int width() const = 0; + virtual int height() const = 0; virtual Size size() const = 0; // 获取通道数 diff --git a/include/graphics/texture_atlas.h b/include/graphics/texture_atlas.h index 7c62563..b9aab35 100644 --- a/include/graphics/texture_atlas.h +++ b/include/graphics/texture_atlas.h @@ -3,12 +3,12 @@ #include #include #include -#include #include -#include -#include -#include +#include #include +#include +#include +#include namespace extra2d { @@ -20,11 +20,11 @@ namespace extra2d { * @brief 图集中的单个纹理条目 */ struct AtlasEntry { - std::string name; // 原始纹理名称/路径 - Rect uvRect; // 在图集中的 UV 坐标范围 - Vec2 originalSize; // 原始纹理尺寸 - uint32_t padding; // 边距(用于避免纹理 bleeding) - + std::string name; // 原始纹理名称/路径 + Rect uvRect; // 在图集中的 UV 坐标范围 + Vec2 originalSize; // 原始纹理尺寸 + uint32_t padding; // 边距(用于避免纹理 bleeding) + AtlasEntry() : uvRect(), originalSize(), padding(2) {} }; @@ -36,56 +36,56 @@ class TextureAtlasPage { public: static constexpr int DEFAULT_SIZE = 2048; static constexpr int MAX_SIZE = 4096; - static constexpr int MIN_TEXTURE_SIZE = 32; // 小于此大小的纹理才考虑合并 - static constexpr int PADDING = 2; // 纹理间边距 - + static constexpr int MIN_TEXTURE_SIZE = 32; // 小于此大小的纹理才考虑合并 + static constexpr int PADDING = 2; // 纹理间边距 + TextureAtlasPage(int width = DEFAULT_SIZE, int height = DEFAULT_SIZE); ~TextureAtlasPage(); - + // 尝试添加纹理到图集 // 返回是否成功,如果成功则输出 uvRect - bool tryAddTexture(const std::string& name, int texWidth, int texHeight, - const uint8_t* pixels, Rect& outUvRect); - + bool tryAddTexture(const std::string &name, int texWidth, int texHeight, + const uint8_t *pixels, Rect &outUvRect); + // 获取图集纹理 Ptr getTexture() const { return texture_; } - + // 获取条目 - const AtlasEntry* getEntry(const std::string& name) const; - + const AtlasEntry *getEntry(const std::string &name) const; + // 获取使用率 float getUsageRatio() const; - + // 获取尺寸 - int getWidth() const { return width_; } - int getHeight() const { return height_; } - + int width() const { return width_; } + int height() const { return height_; } + // 是否已满 bool isFull() const { return isFull_; } - + private: int width_, height_; Ptr texture_; std::unordered_map entries_; - + // 矩形打包数据 struct PackNode { int x, y, width, height; bool used; std::unique_ptr left; std::unique_ptr right; - - PackNode(int x_, int y_, int w, int h) - : x(x_), y(y_), width(w), height(h), used(false) {} + + PackNode(int x_, int y_, int w, int h) + : x(x_), y(y_), width(w), height(h), used(false) {} }; - + std::unique_ptr root_; bool isFull_; int usedArea_; - + // 递归插入 - PackNode* insert(PackNode* node, int width, int height); - void writePixels(int x, int y, int w, int h, const uint8_t* pixels); + PackNode *insert(PackNode *node, int width, int height); + void writePixels(int x, int y, int w, int h, const uint8_t *pixels); }; /** @@ -96,47 +96,49 @@ class TextureAtlas { public: TextureAtlas(); ~TextureAtlas(); - + // 初始化 void init(int pageSize = TextureAtlasPage::DEFAULT_SIZE); - + // 添加纹理到图集 // 如果纹理太大,返回 false,应该作为独立纹理加载 - bool addTexture(const std::string& name, int width, int height, - const uint8_t* pixels); - + bool addTexture(const std::string &name, int width, int height, + const uint8_t *pixels); + // 查询纹理是否在图集中 - bool contains(const std::string& name) const; - + bool contains(const std::string &name) const; + // 获取纹理在图集中的信息 // 返回图集纹理和 UV 坐标 - const Texture* getAtlasTexture(const std::string& name) const; - Rect getUVRect(const std::string& name) const; - + const Texture *getAtlasTexture(const std::string &name) const; + Rect getUVRect(const std::string &name) const; + // 获取原始纹理尺寸 - Vec2 getOriginalSize(const std::string& name) const; - + Vec2 getOriginalSize(const std::string &name) const; + // 获取所有图集页面 - const std::vector>& getPages() const { return pages_; } - + const std::vector> &getPages() const { + return pages_; + } + // 获取总使用率 float getTotalUsageRatio() const; - + // 清空所有图集 void clear(); - + // 设置是否启用自动图集 void setEnabled(bool enabled) { enabled_ = enabled; } bool isEnabled() const { return enabled_; } - + // 设置纹理大小阈值(小于此大小的纹理才进入图集) void setSizeThreshold(int threshold) { sizeThreshold_ = threshold; } int getSizeThreshold() const { return sizeThreshold_; } private: std::vector> pages_; - std::unordered_map entryToPage_; - + std::unordered_map entryToPage_; + int pageSize_; int sizeThreshold_; bool enabled_; @@ -148,36 +150,34 @@ private: */ class TextureAtlasManager { public: - static TextureAtlasManager& getInstance(); - + static TextureAtlasManager &getInstance(); + // 获取主图集 - TextureAtlas& getAtlas() { return atlas_; } - + TextureAtlas &getAtlas() { return atlas_; } + // 快捷方法 - bool addTexture(const std::string& name, int width, int height, - const uint8_t* pixels) { + bool addTexture(const std::string &name, int width, int height, + const uint8_t *pixels) { return atlas_.addTexture(name, width, height, pixels); } - - bool contains(const std::string& name) const { - return atlas_.contains(name); - } - - const Texture* getAtlasTexture(const std::string& name) const { + + bool contains(const std::string &name) const { return atlas_.contains(name); } + + const Texture *getAtlasTexture(const std::string &name) const { return atlas_.getAtlasTexture(name); } - - Rect getUVRect(const std::string& name) const { + + Rect getUVRect(const std::string &name) const { return atlas_.getUVRect(name); } private: TextureAtlasManager() = default; ~TextureAtlasManager() = default; - - TextureAtlasManager(const TextureAtlasManager&) = delete; - TextureAtlasManager& operator=(const TextureAtlasManager&) = delete; - + + TextureAtlasManager(const TextureAtlasManager &) = delete; + TextureAtlasManager &operator=(const TextureAtlasManager &) = delete; + TextureAtlas atlas_; }; diff --git a/include/platform/window.h b/include/platform/window.h index 546db42..3a1118a 100644 --- a/include/platform/window.h +++ b/include/platform/window.h @@ -5,7 +5,6 @@ #include #include - #include namespace extra2d { @@ -75,8 +74,8 @@ public: void setResizable(bool resizable); // 获取窗口属性 - int getWidth() const { return width_; } - int getHeight() const { return height_; } + int width() const { return width_; } + int height() const { return height_; } Size size() const { return Size(static_cast(width_), static_cast(height_)); } diff --git a/include/scene/node.h b/include/scene/node.h index 82d549b..c2fa96b 100644 --- a/include/scene/node.h +++ b/include/scene/node.h @@ -11,12 +11,11 @@ #include #include - namespace extra2d { // 前向声明 class Scene; -class RenderBackend; +class Renderer; struct RenderCommand; class Tween; enum class TweenEasing : uint8_t; @@ -142,7 +141,7 @@ public: virtual void onEnter(); virtual void onExit(); virtual void onUpdate(float dt); - virtual void onRender(RenderBackend &renderer); + virtual void onRender(Renderer &renderer); virtual void onAttachToScene(Scene *scene); virtual void onDetachFromScene(); @@ -246,7 +245,7 @@ public: // 内部方法 // ------------------------------------------------------------------------ void update(float dt); - void render(RenderBackend &renderer); + void render(Renderer &renderer); void sortChildren(); bool isRunning() const { return running_; } @@ -258,7 +257,7 @@ public: protected: // 子类重写 - virtual void onDraw(RenderBackend &renderer) {} + virtual void onDraw(Renderer &renderer) {} virtual void onUpdateNode(float dt) {} virtual void generateRenderCommand(std::vector &commands, int zOrder) {}; diff --git a/include/scene/scene.h b/include/scene/scene.h index bc9c63a..2036895 100644 --- a/include/scene/scene.h +++ b/include/scene/scene.h @@ -42,8 +42,8 @@ public: void setViewportSize(const Size &size); Size getViewportSize() const { return viewportSize_; } - float getWidth() const { return viewportSize_.width; } - float getHeight() const { return viewportSize_.height; } + float width() const { return viewportSize_.width; } + float height() const { return viewportSize_.height; } // ------------------------------------------------------------------------ // 场景状态 @@ -55,11 +55,11 @@ public: // ------------------------------------------------------------------------ // 渲染和更新 // ------------------------------------------------------------------------ - void renderScene(RenderBackend &renderer); - virtual void renderContent(RenderBackend &renderer); + void renderScene(Renderer &renderer); + virtual void renderContent(Renderer &renderer); void updateScene(float dt); void collectRenderCommands(std::vector &commands, - int parentZOrder = 0) override; + int parentZOrder = 0) override; // ------------------------------------------------------------------------ // 空间索引系统 diff --git a/include/scene/scene_manager.h b/include/scene/scene_manager.h index 04e45fd..d66c317 100644 --- a/include/scene/scene_manager.h +++ b/include/scene/scene_manager.h @@ -1,14 +1,15 @@ #pragma once #include +#include #include #include -#include #include #include #include #include + namespace extra2d { // 前向声明 @@ -78,7 +79,7 @@ public: // 更新和渲染 // ------------------------------------------------------------------------ void update(float dt); - void render(RenderBackend &renderer); + void render(Renderer &renderer); void collectRenderCommands(std::vector &commands); // ------------------------------------------------------------------------ @@ -114,8 +115,8 @@ private: // 创建过渡场景 Ptr createTransitionScene(TransitionType type, - float duration, - Ptr inScene); + float duration, + Ptr inScene); std::stack> sceneStack_; std::unordered_map> namedScenes_; diff --git a/include/scene/shape_node.h b/include/scene/shape_node.h index 3c7f670..0763833 100644 --- a/include/scene/shape_node.h +++ b/include/scene/shape_node.h @@ -88,7 +88,7 @@ public: Rect boundingBox() const override; protected: - void onDraw(RenderBackend &renderer) override; + void onDraw(Renderer &renderer) override; void generateRenderCommand(std::vector &commands, int zOrder) override; diff --git a/include/scene/sprite.h b/include/scene/sprite.h index 43d55c6..0b3e0d5 100644 --- a/include/scene/sprite.h +++ b/include/scene/sprite.h @@ -40,7 +40,7 @@ public: Rect boundingBox() const override; protected: - void onDraw(RenderBackend &renderer) override; + void onDraw(Renderer &renderer) override; void generateRenderCommand(std::vector &commands, int zOrder) override; diff --git a/include/scene/transition_box_scene.h b/include/scene/transition_box_scene.h index 97635fb..048fb48 100644 --- a/include/scene/transition_box_scene.h +++ b/include/scene/transition_box_scene.h @@ -25,7 +25,7 @@ public: protected: void onTransitionStart() override; - void renderContent(RenderBackend &renderer) override; + void renderContent(Renderer &renderer) override; private: int divisions_; diff --git a/include/scene/transition_fade_scene.h b/include/scene/transition_fade_scene.h index 1e242a1..f5fbecd 100644 --- a/include/scene/transition_fade_scene.h +++ b/include/scene/transition_fade_scene.h @@ -1,8 +1,9 @@ #pragma once -#include -#include #include +#include +#include + namespace extra2d { @@ -39,7 +40,7 @@ protected: * @brief 渲染内容 * 根据进度控制新旧场景的显示 */ - void renderContent(RenderBackend &renderer) override; + void renderContent(Renderer &renderer) override; private: /** @@ -47,8 +48,8 @@ private: */ void hideOutShowIn(); - Color maskColor_; // 遮罩颜色 - bool hasSwitched_ = false; // 是否已经切换场景 + Color maskColor_; // 遮罩颜色 + bool hasSwitched_ = false; // 是否已经切换场景 }; } // namespace extra2d diff --git a/include/scene/transition_flip_scene.h b/include/scene/transition_flip_scene.h index aa2ba3b..768b969 100644 --- a/include/scene/transition_flip_scene.h +++ b/include/scene/transition_flip_scene.h @@ -28,7 +28,7 @@ public: protected: void onTransitionStart() override; - void renderContent(RenderBackend &renderer) override; + void renderContent(Renderer &renderer) override; private: Axis axis_; diff --git a/include/scene/transition_scale_scene.h b/include/scene/transition_scale_scene.h index 8f379bc..dded968 100644 --- a/include/scene/transition_scale_scene.h +++ b/include/scene/transition_scale_scene.h @@ -23,7 +23,7 @@ public: protected: void onTransitionStart() override; - void renderContent(RenderBackend &renderer) override; + void renderContent(Renderer &renderer) override; }; } // namespace extra2d diff --git a/include/scene/transition_scene.h b/include/scene/transition_scene.h index 052ccd5..f66e9f8 100644 --- a/include/scene/transition_scene.h +++ b/include/scene/transition_scene.h @@ -1,7 +1,8 @@ #pragma once -#include #include +#include + namespace extra2d { @@ -63,7 +64,9 @@ public: /** * @brief 设置过渡完成回调 */ - void setFinishCallback(FinishCallback callback) { finishCallback_ = callback; } + void setFinishCallback(FinishCallback callback) { + finishCallback_ = callback; + } /** * @brief 获取过渡持续时间 @@ -88,7 +91,7 @@ public: // ------------------------------------------------------------------------ // 渲染 - 在 TransitionScene 上渲染新旧两个子场景 // ------------------------------------------------------------------------ - void renderContent(RenderBackend &renderer) override; + void renderContent(Renderer &renderer) override; // ------------------------------------------------------------------------ // 生命周期 @@ -106,20 +109,20 @@ protected: /** * @brief 绘制源场景(旧场景) */ - virtual void drawOutScene(RenderBackend &renderer); + virtual void drawOutScene(Renderer &renderer); /** * @brief 绘制目标场景(新场景) */ - virtual void drawInScene(RenderBackend &renderer); + virtual void drawInScene(Renderer &renderer); float duration_; float elapsed_ = 0.0f; float progress_ = 0.0f; bool isFinished_ = false; - Ptr inScene_; // 要进入的场景 - Ptr outScene_; // 要退出的场景 + Ptr inScene_; // 要进入的场景 + Ptr outScene_; // 要退出的场景 FinishCallback finishCallback_; }; diff --git a/include/scene/transition_slide_scene.h b/include/scene/transition_slide_scene.h index e69a1af..9733bb5 100644 --- a/include/scene/transition_slide_scene.h +++ b/include/scene/transition_slide_scene.h @@ -26,7 +26,7 @@ public: protected: void onTransitionStart() override; - void renderContent(RenderBackend &renderer) override; + void renderContent(Renderer &renderer) override; private: TransitionDirection direction_; diff --git a/include/ui/button.h b/include/ui/button.h index cc87669..9ffa7fe 100644 --- a/include/ui/button.h +++ b/include/ui/button.h @@ -181,12 +181,12 @@ public: Rect boundingBox() const override; protected: - void onDrawWidget(RenderBackend &renderer) override; - void drawBackgroundImage(RenderBackend &renderer, const Rect &rect); - void drawRoundedRect(RenderBackend &renderer, const Rect &rect, - const Color &color, float radius); - void fillRoundedRect(RenderBackend &renderer, const Rect &rect, - const Color &color, float radius); + void onDrawWidget(Renderer &renderer) override; + void drawBackgroundImage(Renderer &renderer, const Rect &rect); + void drawRoundedRect(Renderer &renderer, const Rect &rect, const Color &color, + float radius); + void fillRoundedRect(Renderer &renderer, const Rect &rect, const Color &color, + float radius); Vec2 calculateImageSize(const Vec2 &buttonSize, const Vec2 &imageSize); // 状态访问(供子类使用) diff --git a/include/ui/check_box.h b/include/ui/check_box.h index 1ad3b31..44110ee 100644 --- a/include/ui/check_box.h +++ b/include/ui/check_box.h @@ -74,7 +74,7 @@ public: Rect boundingBox() const override; protected: - void onDrawWidget(RenderBackend &renderer) override; + void onDrawWidget(Renderer &renderer) override; bool onMousePress(const MouseEvent &event) override; bool onMouseRelease(const MouseEvent &event) override; diff --git a/include/ui/label.h b/include/ui/label.h index 97cd420..38d1549 100644 --- a/include/ui/label.h +++ b/include/ui/label.h @@ -111,7 +111,7 @@ public: Rect boundingBox() const override; protected: - void onDrawWidget(RenderBackend &renderer) override; + void onDrawWidget(Renderer &renderer) override; private: std::string text_; @@ -138,8 +138,7 @@ private: mutable bool sizeDirty_ = true; void updateCache() const; - void drawText(RenderBackend &renderer, const Vec2 &position, - const Color &color); + void drawText(Renderer &renderer, const Vec2 &position, const Color &color); Vec2 calculateDrawPosition() const; std::vector splitLines() const; }; diff --git a/include/ui/progress_bar.h b/include/ui/progress_bar.h index b097df8..82a4e11 100644 --- a/include/ui/progress_bar.h +++ b/include/ui/progress_bar.h @@ -151,7 +151,7 @@ public: protected: void onUpdate(float deltaTime) override; - void onDrawWidget(RenderBackend &renderer) override; + void onDrawWidget(Renderer &renderer) override; private: // 数值 @@ -210,11 +210,11 @@ private: Color getCurrentFillColor() const; std::string formatText() const; - void drawRoundedRect(RenderBackend &renderer, const Rect &rect, - const Color &color, float radius); - void fillRoundedRect(RenderBackend &renderer, const Rect &rect, - const Color &color, float radius); - void drawStripes(RenderBackend &renderer, const Rect &rect); + void drawRoundedRect(Renderer &renderer, const Rect &rect, const Color &color, + float radius); + void fillRoundedRect(Renderer &renderer, const Rect &rect, const Color &color, + float radius); + void drawStripes(Renderer &renderer, const Rect &rect); }; } // namespace extra2d diff --git a/include/ui/radio_button.h b/include/ui/radio_button.h index f7f6e47..b2db151 100644 --- a/include/ui/radio_button.h +++ b/include/ui/radio_button.h @@ -79,7 +79,7 @@ public: Rect boundingBox() const override; protected: - void onDrawWidget(RenderBackend &renderer) override; + void onDrawWidget(Renderer &renderer) override; bool onMousePress(const MouseEvent &event) override; bool onMouseRelease(const MouseEvent &event) override; diff --git a/include/ui/slider.h b/include/ui/slider.h index be8667a..7ab20c9 100644 --- a/include/ui/slider.h +++ b/include/ui/slider.h @@ -106,7 +106,7 @@ public: Rect boundingBox() const override; protected: - void onDrawWidget(RenderBackend &renderer) override; + void onDrawWidget(Renderer &renderer) override; bool onMousePress(const MouseEvent &event) override; bool onMouseRelease(const MouseEvent &event) override; bool onMouseMove(const MouseEvent &event) override; diff --git a/include/ui/text.h b/include/ui/text.h index dc15e88..cb8f152 100644 --- a/include/ui/text.h +++ b/include/ui/text.h @@ -8,7 +8,6 @@ #include #include - namespace extra2d { // ============================================================================ @@ -102,7 +101,7 @@ public: Rect boundingBox() const override; protected: - void onDrawWidget(RenderBackend &renderer) override; + void onDrawWidget(Renderer &renderer) override; private: std::string text_; diff --git a/include/ui/widget.h b/include/ui/widget.h index 70c3c02..23a540e 100644 --- a/include/ui/widget.h +++ b/include/ui/widget.h @@ -59,10 +59,10 @@ protected: } // 子类重写此方法以支持自定义渲染 - virtual void onDrawWidget(RenderBackend &renderer) {} + virtual void onDrawWidget(Renderer &renderer) {} // 重写 Node 的 onDraw - void onDraw(RenderBackend &renderer) override; + void onDraw(Renderer &renderer) override; private: Size size_ = Size::Zero(); diff --git a/src/app/application.cpp b/src/app/application.cpp index a508d1a..e6a1877 100644 --- a/src/app/application.cpp +++ b/src/app/application.cpp @@ -13,7 +13,6 @@ #include #include - #include #include @@ -121,7 +120,7 @@ bool Application::init(const AppConfig &config) { // ======================================== // 4. 初始化渲染器 // ======================================== - renderer_ = RenderBackend::create(config.renderBackend); + renderer_ = Renderer::create(config.Renderer); if (!renderer_ || !renderer_->init(window_.get())) { E2D_LOG_ERROR("Failed to initialize renderer"); window_->destroy(); @@ -136,8 +135,8 @@ bool Application::init(const AppConfig &config) { timerManager_ = makeUnique(); eventQueue_ = makeUnique(); eventDispatcher_ = makeUnique(); - camera_ = makeUnique(0, static_cast(window_->getWidth()), - static_cast(window_->getHeight()), 0); + camera_ = makeUnique(0, static_cast(window_->width()), + static_cast(window_->height()), 0); // 窗口大小回调 window_->setResizeCallback([this](int width, int height) { @@ -356,7 +355,7 @@ void Application::render() { return; } - renderer_->setViewport(0, 0, window_->getWidth(), window_->getHeight()); + renderer_->setViewport(0, 0, window_->width(), window_->height()); if (sceneManager_) { sceneManager_->render(*renderer_); @@ -388,8 +387,8 @@ void Application::enterScene(Ptr scene) { enterScene(scene, nullptr); } void Application::enterScene(Ptr scene, Ptr transitionScene) { if (sceneManager_ && scene) { - scene->setViewportSize(static_cast(window_->getWidth()), - static_cast(window_->getHeight())); + scene->setViewportSize(static_cast(window_->width()), + static_cast(window_->height())); sceneManager_->enterScene(scene, transitionScene); } } diff --git a/src/graphics/opengl/gl_renderer.cpp b/src/graphics/opengl/gl_renderer.cpp index bfcc9ac..32f471f 100644 --- a/src/graphics/opengl/gl_renderer.cpp +++ b/src/graphics/opengl/gl_renderer.cpp @@ -1,8 +1,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -227,8 +227,8 @@ void GLRenderer::drawSprite(const Texture &texture, const Rect &destRect, data.size = glm::vec2(destRect.size.width, destRect.size.height); Texture *tex = const_cast(&texture); - float texW = static_cast(tex->getWidth()); - float texH = static_cast(tex->getHeight()); + float texW = static_cast(tex->width()); + float texH = static_cast(tex->height()); // 纹理坐标计算 float u1 = srcRect.origin.x / texW; @@ -249,10 +249,10 @@ void GLRenderer::drawSprite(const Texture &texture, const Rect &destRect, void GLRenderer::drawSprite(const Texture &texture, const Vec2 &position, const Color &tint) { - Rect destRect(position.x, position.y, static_cast(texture.getWidth()), - static_cast(texture.getHeight())); - Rect srcRect(0, 0, static_cast(texture.getWidth()), - static_cast(texture.getHeight())); + Rect destRect(position.x, position.y, static_cast(texture.width()), + static_cast(texture.height())); + Rect srcRect(0, 0, static_cast(texture.width()), + static_cast(texture.height())); drawSprite(texture, destRect, srcRect, tint, 0.0f, Vec2(0, 0)); } @@ -446,7 +446,7 @@ void GLRenderer::drawText(const FontAtlas &font, const std::string &text, // 收集所有字符数据用于批处理 std::vector sprites; - sprites.reserve(text.size()); // 预分配空间 + sprites.reserve(text.size()); // 预分配空间 for (char32_t codepoint : utf8ToUtf32(text)) { if (codepoint == '\n') { @@ -477,7 +477,7 @@ void GLRenderer::drawText(const FontAtlas &font, const std::string &text, data.rotation = 0.0f; data.anchor = glm::vec2(0.0f, 0.0f); data.isSDF = font.isSDF(); - + sprites.push_back(data); } } diff --git a/src/graphics/render_backend.cpp b/src/graphics/render_backend.cpp index 64d38b6..0e05643 100644 --- a/src/graphics/render_backend.cpp +++ b/src/graphics/render_backend.cpp @@ -3,7 +3,7 @@ namespace extra2d { -UniquePtr RenderBackend::create(BackendType type) { +UniquePtr Renderer::create(BackendType type) { switch (type) { case BackendType::OpenGL: return makeUnique(); diff --git a/src/graphics/render_target.cpp b/src/graphics/render_target.cpp index ccb3f50..69fa137 100644 --- a/src/graphics/render_target.cpp +++ b/src/graphics/render_target.cpp @@ -81,8 +81,8 @@ bool RenderTarget::createFromTexture(Ptr texture, bool hasDepth) { destroy(); - width_ = texture->getWidth(); - height_ = texture->getHeight(); + width_ = texture->width(); + height_ = texture->height(); colorFormat_ = texture->getFormat(); hasDepth_ = hasDepth; hasStencil_ = false; @@ -238,8 +238,8 @@ void RenderTarget::blitTo(RenderTarget &target, bool color, bool depth) { } if (mask != 0) { - glBlitFramebuffer(0, 0, width_, height_, 0, 0, target.getWidth(), - target.getHeight(), mask, GL_LINEAR); + glBlitFramebuffer(0, 0, width_, height_, 0, 0, target.width(), + target.height(), mask, GL_LINEAR); } glBindFramebuffer(GL_FRAMEBUFFER, 0); @@ -453,8 +453,8 @@ void MultisampleRenderTarget::resolveTo(RenderTarget &target) { glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo_); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, target.getFBO()); - glBlitFramebuffer(0, 0, width_, height_, 0, 0, target.getWidth(), - target.getHeight(), GL_COLOR_BUFFER_BIT, GL_LINEAR); + glBlitFramebuffer(0, 0, width_, height_, 0, 0, target.width(), + target.height(), GL_COLOR_BUFFER_BIT, GL_LINEAR); glBindFramebuffer(GL_FRAMEBUFFER, 0); } diff --git a/src/resource/resource_manager.cpp b/src/resource/resource_manager.cpp index 247cd81..c769cd6 100644 --- a/src/resource/resource_manager.cpp +++ b/src/resource/resource_manager.cpp @@ -1,11 +1,11 @@ #include -#include #include