Lenheart 9a5b36392c refactor(actor): 重构Actor类以支持完整变换体系
重构Actor类,添加变换矩阵计算和父子关系处理
- 添加本地和世界变换矩阵计算
- 实现锚点、旋转、缩放等变换属性
- 添加父子关系变换继承
- 优化子节点管理,支持按ZOrder排序
- 添加透明度继承功能
2026-03-21 03:34:56 +08:00
2026-03-18 04:23:15 +08:00

Frostbite2D

一个现代化的跨平台2D游戏引擎使用C++17开发。

特性

  • 跨平台支持 - Windows、Linux、macOS、Nintendo Switch
  • 现代渲染 - OpenGL渲染器支持批量渲染和着色器管理
  • 完整的游戏开发框架 - 场景管理、精灵系统、资源管理
  • 高效的工具集 - 二进制读取器、PVF归档格式、脚本解析器
  • 智能指针系统 - 引用计数指针,避免内存泄漏

构建

本项目使用 XMake 作为构建系统。

前置要求

  • C++17 兼容编译器
  • XMake
  • SDL2、SDL2_image、GLM、Glad

基本构建

xmake build

调试构建

xmake build -m debug

发布构建

xmake build -m release

平台特定构建

xmake build -p windows
xmake build -p linux
xmake build -p switch

快速开始

#include <frostbite2D/core/application.h>
#include <frostbite2D/core/window.h>
#include <frostbite2D/2d/sprite.h>
#include <frostbite2D/scene/scene.h>
#include <frostbite2D/scene/scene_manager.h>

using namespace frostbite2D;

int main(int argc, char **argv) {
  AppConfig config = AppConfig::createDefault();
  config.windowConfig.width = 1280;
  config.windowConfig.height = 720;
  config.windowConfig.title = "My Game";

  Application& app = Application::get();
  if (!app.init(config)) {
    return -1;
  }

  auto scene = MakePtr<Scene>();
  SceneManager::get().PushScene(scene);

  auto sprite = Sprite::createFromFile("assets/player.png");
  if (sprite) {
    sprite->SetPosition(100, 100);
    scene->AddActor(sprite);
  }

  app.run();
  app.shutdown();

  return 0;
}

项目结构

Frostbite2D/
├── Frostbite2D/          # 引擎核心代码
│   ├── include/          # 公共头文件
│   │   └── frostbite2D/
│   │       ├── 2d/       # 2D图形组件
│   │       ├── core/     # 核心引擎类
│   │       ├── graphics/ # 图形渲染系统
│   │       ├── scene/    # 场景管理
│   │       ├── types/    # 类型定义
│   │       └── utils/    # 工具类
│   └── src/              # 实现文件
├── Game/                 # 游戏应用示例
│   ├── assets/           # 游戏资源
│   ├── include/          # 游戏头文件
│   └── src/              # 游戏源文件
├── platform/             # 平台配置
└── xmake.lua             # XMake构建配置

许可证

MIT License

Description
No description provided
Readme 54 MiB
Languages
C 50.2%
C++ 49.4%
Lua 0.4%