#include #include #include #include #include #include using namespace extra2d; static bool writeTestWav(const std::string &path) { const int sampleRate = 22050; const int channels = 1; const int bitsPerSample = 16; const int durationMs = 250; const int sampleCount = sampleRate * durationMs / 1000; const int byteRate = sampleRate * channels * bitsPerSample / 8; const int blockAlign = channels * bitsPerSample / 8; const int dataSize = sampleCount * blockAlign; const int riffSize = 36 + dataSize; std::ofstream file(path, std::ios::binary); if (!file.is_open()) { return false; } file.write("RIFF", 4); file.write(reinterpret_cast(&riffSize), 4); file.write("WAVE", 4); file.write("fmt ", 4); const int fmtChunkSize = 16; const short audioFormat = 1; const short numChannels = static_cast(channels); const short bps = static_cast(bitsPerSample); file.write(reinterpret_cast(&fmtChunkSize), 4); file.write(reinterpret_cast(&audioFormat), 2); file.write(reinterpret_cast(&numChannels), 2); file.write(reinterpret_cast(&sampleRate), 4); file.write(reinterpret_cast(&byteRate), 4); const short ba = static_cast(blockAlign); file.write(reinterpret_cast(&ba), 2); file.write(reinterpret_cast(&bps), 2); file.write("data", 4); file.write(reinterpret_cast(&dataSize), 4); std::vector samples(static_cast(sampleCount), 0); file.write(reinterpret_cast(samples.data()), dataSize); return file.good(); } int main(int argc, char **argv) { // 创建应用(自动创建窗口) auto app = Application::create(); AppConfig config; config.title = "Hello World"; config.width = 1280; config.height = 720; if (!app->init(config)) { printf("初始化失败!\n"); return -1; } printf("窗口: %dx%d\n", app->getWindowWidth(), app->getWindowHeight()); AssetsModule *assets = getAssets(); if (assets) { Handle font = assets->load("assets/font.ttf"); if (font.isValid()) { Font *fontPtr = assets->get(font); float lineHeight = fontPtr ? fontPtr->lineHeight(32.0f) : 0.0f; printf("字体加载成功,32px 行高: %.2f\n", lineHeight); } else { printf("字体加载失败\n"); } const std::string testMusicPath = "assets/generated_test.wav"; if (writeTestWav(testMusicPath)) { Handle music = assets->load(testMusicPath); if (music.isValid()) { printf("音乐加载成功: %s\n", testMusicPath.c_str()); } else { printf("音乐加载失败: %s\n", testMusicPath.c_str()); } } else { printf("测试音频文件生成失败\n"); } } // 运行应用 app->run(); // 自动销毁 return 0; }