# Easy2D PC 端编译指南 本文档说明如何在 PC 端(Windows/Linux/macOS)编译和运行 Easy2D 引擎。 ## 概述 Easy2D 现在支持多平台: - **Nintendo Switch** (ARM64) - 原始平台 - **Windows** (x64) - 新增 - **Linux** (x64) - 新增 - **macOS** (x64/ARM64) - 新增 PC 端使用 OpenGL ES 3.2(通过 Angle 或 Mesa)保持与 Switch 的代码兼容性。 ## 前置条件 ### Windows 1. **Visual Studio 2019/2022** - 安装 C++ 桌面开发工作负载 2. **xmake** - 构建系统 (https://xmake.io) 3. **SDL2** - 可以通过以下方式安装: - vcpkg: `vcpkg install sdl2 sdl2-mixer` - 手动下载:https://www.libsdl.org/download-2.0.php 4. **Angle** (可选) - Google 的 GLES 实现 - 下载 Angle 二进制文件或从 Chromium 构建 - 放置到 `third_party/angle/` 目录 ### Linux (Ubuntu/Debian) ```bash # 安装依赖 sudo apt-get update sudo apt-get install -y build-essential sudo apt-get install -y libsdl2-dev libsdl2-mixer-dev sudo apt-get install -y libgles2-mesa-dev libegl1-mesa-dev # 安装 xmake sudo add-apt-repository ppa:xmake-io/xmake sudo apt-get update sudo apt-get install xmake ``` ### macOS ```bash # 安装 Homebrew (如果还没有) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 安装依赖 brew install sdl2 sdl2_mixer brew install angle # 或 mesa # 安装 xmake brew install xmake ``` ## 编译步骤 ### 1. 配置项目 ```bash # 进入项目目录 cd c:\Users\soulcoco\Desktop\Easy2D\Extra2D # 配置 PC 平台构建 xmake config -p pc -m release # 或使用环境变量 set E2D_PLATFORM=pc # Windows export E2D_PLATFORM=pc # Linux/macOS xmake config ``` ### 2. 编译引擎库 ```bash # 编译 Easy2D 静态库 xmake build extra2d ``` ### 3. 编译示例程序 ```bash # 编译 Hello World 示例 xmake build hello_world # 编译所有示例 xmake build -a ``` ### 4. 运行示例 ```bash # 运行 Hello World xmake run hello_world # 或手动运行 ./build/windows/hello_world.exe # Windows ./build/linux/hello_world # Linux ./build/macos/hello_world # macOS ``` ## 项目结构 ``` Extra2D/ ├── xmake.lua # 主构建配置 ├── xmake/ │ ├── toolchains/ │ │ ├── switch.lua # Switch 工具链 │ │ └── pc.lua # PC 工具链 (新增) │ └── targets/ │ ├── extra2d.lua # 引擎库配置 │ └── examples.lua # 示例程序配置 ├── Extra2D/ │ ├── include/ │ │ └── extra2d/ │ │ └── platform/ │ │ ├── platform_compat.h # 跨平台兼容性 (新增) │ │ ├── file_system.h # 文件系统工具 (新增) │ │ ├── window.h # 窗口系统 (修改) │ │ └── input.h # 输入系统 (修改) │ └── src/ │ └── platform/ │ ├── window.cpp # (修改) │ ├── input.cpp # (修改) │ └── file_system.cpp # (新增) └── examples/ └── hello_world/ └── main.cpp # (修改,支持多平台) ``` ## 平台差异 ### 窗口系统 | 功能 | Switch | PC | |------|--------|-----| | 窗口模式 | 始终全屏 (1280x720) | 可配置全屏/窗口 | | 窗口大小 | 固定 | 可调整 | | DPI 缩放 | 1.0 | 自动检测 | | 鼠标光标 | 无 | 支持多种形状 | ### 输入系统 | 功能 | Switch | PC | |------|--------|-----| | 键盘 | 映射到手柄 | 原生支持 | | 鼠标 | 映射到触摸 | 原生支持 | | 手柄 | SDL GameController | SDL GameController | | 触摸屏 | 原生 | 可选支持 | ### 文件系统 | 功能 | Switch | PC | |------|--------|-----| | 资源路径 | `romfs:/assets/` | `./assets/` 或 exe 目录 | | 文件访问 | RomFS | 标准文件系统 | ## 开发指南 ### 编写跨平台代码 ```cpp #include #include // 检查平台 if (platform::isSwitch()) { // Switch 特定代码 } else if (platform::isPC()) { // PC 特定代码 } // 解析资源路径(自动处理平台差异) std::string fontPath = FileSystem::resolvePath("assets/font.ttf"); // Switch: "romfs:/assets/font.ttf" // PC: "./assets/font.ttf" // 条件编译 #ifdef PLATFORM_SWITCH // Switch 代码 #elif defined(PLATFORM_PC) // PC 代码 #endif ``` ### 输入处理 ```cpp // 跨平台输入(推荐) auto& input = Application::instance().input(); // 键盘(PC 原生,Switch 映射到手柄) if (input.isKeyPressed(Key::Space)) { // 处理空格键 } // 手柄(所有平台) if (input.isButtonPressed(SDL_CONTROLLER_BUTTON_A)) { // 处理 A 按钮 } // 鼠标(PC 原生,Switch 映射到触摸) if (input.isMouseDown(MouseButton::Left)) { // 处理鼠标左键 } ``` ## 故障排除 ### 找不到 SDL2 **Windows:** ```bash # 设置 SDL2 路径 set SDL2_DIR=C:\SDL2-2.28.0 xmake config ``` **Linux:** ```bash # 安装 SDL2 开发库 sudo apt-get install libsdl2-dev libsdl2-mixer-dev ``` ### 找不到 GLES **Windows (Angle):** ```bash # 下载 Angle 并设置路径 set ANGLE_DIR=C:\angle xmake config ``` **Linux (Mesa):** ```bash # 安装 Mesa GLES sudo apt-get install libgles2-mesa-dev libegl1-mesa-dev ``` ### 编译错误 1. 确保使用 C++17 或更高版本 2. 检查 xmake 版本是否最新:`xmake --version` 3. 清理构建缓存:`xmake clean -a` ## 下一步 1. 尝试编译和运行 `hello_world` 示例 2. 阅读 `platform_compat.h` 了解平台 API 3. 使用 `FileSystem` 类处理跨平台文件路径 4. 参考示例代码编写跨平台应用 ## 许可证 Easy2D 采用 MIT 许可证。详见 LICENSE 文件。 --- **最后更新**: 2026年2月10日 **Easy2D 版本**: 3.1.0