#include using namespace extra2d; int main(int argc, char **argv) { E2D_INFO(CAT_APP, "========================"); E2D_INFO(CAT_APP, "Extra2D Hello World Demo"); E2D_INFO(CAT_APP, "========================"); auto &app = Application::instance(); app.name = "Hello World"; // 注册服务和模块(顺序无关,Lifecycle 会自动按依赖拓扑排序) app.useService(); app.useService(); app.useService(); app.useModule([](WindowCfg &cfg) { cfg.title = "Extra2D - Hello World"; cfg.width = 1280; cfg.height = 720; }); app.useModule([](RenderCfg &cfg) { cfg.glMajor = 4; cfg.glMinor = 5; cfg.vsync = true; }); if (!app.init()) { E2D_ERROR(CAT_APP, "应用初始化失败!"); return -1; } auto eventService = Lifecycle::instance().service(); if (eventService) { eventService->on(EventType::KeyPressed, [&app](Event &e) { auto &keyEvent = std::get(e.data); if (keyEvent.key == static_cast(Key::Escape)) { E2D_INFO(CAT_INPUT, "ESC 键按下,退出应用"); app.quit(); } }); eventService->on(EventType::GamepadButtonPressed, [&app](Event &e) { auto &btnEvent = std::get(e.data); if (btnEvent.button == static_cast(Gamepad::Start)) { E2D_INFO(CAT_INPUT, "START 按钮按下,退出应用"); app.quit(); } }); } E2D_INFO(CAT_APP, "开始主循环..."); app.run(); E2D_INFO(CAT_APP, "应用结束"); app.shutdown(); return 0; }