#include #include #include using namespace extra2d; class ImageDisplayScene : public Scene { public: void onEnter() override { Scene::onEnter(); createCamera(); createImageSprite(); } void update(float dt) override { Scene::update(dt); if (textureLoaded_) { return; } auto *rhiModule = RHIModule::get(); if (!rhiModule || !rhiModule->getDevice()) { return; } auto assets = getAssets(); if (!assets || !spriteRenderer_) { return; } auto texture = assets->load("assets/test.png"); if (texture.isValid()) { spriteRenderer_->setTexture(texture); printf("图片加载成功: assets/test.png\n"); } else { printf("图片加载失败: assets/test.png\n"); } textureLoaded_ = true; } private: void createCamera() { auto cameraNode = makePtr(); cameraNode->setName("MainCamera"); cameraNode->setPosition(0.0f, 0.0f); auto camera = makePtr(); camera->setOrtho(0.0f, 1280.0f, 720.0f, 0.0f, -1.0f, 1.0f); cameraNode->addComponent(camera); setMainCamera(camera); addChild(cameraNode); } void createImageSprite() { auto spriteNode = makePtr(); spriteNode->setName("ImageSprite"); spriteNode->setPosition(640.0f, 360.0f); // spriteNode->setSize(384.0f, 384.0f); spriteNode->setAnchor(0.5f, 0.5f); spriteRenderer_ = makePtr(); // spriteRenderer_->setColor(Color::White); spriteNode->addComponent(spriteRenderer_); addChild(spriteNode); } Ptr spriteRenderer_; bool textureLoaded_ = false; }; int main(int argc, char **argv) { auto app = Application::create(); AppConfig config; config.title = "Image Display Demo - Extra2D"; config.width = 1280; config.height = 720; if (!app->init(config)) { printf("应用程序初始化失败!\n"); return -1; } SceneModule *sceneModule = app->getModule(); if (!sceneModule) { printf("获取场景模块失败!\n"); return -1; } Director *director = sceneModule->getDirector(); if (!director) { printf("获取导演器失败!\n"); return -1; } auto scene = makePtr(); director->runScene(scene); app->run(); return 0; }