#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); trySetupTexture(); } private: void trySetupTexture() { 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); textureLoaded_ = true; } } void createCamera() { auto cameraNode = makePtr(); cameraNode->setName("MainCamera"); cameraNode->setPosition(0.0f, 0.0f); auto camera = makePtr(); camera->setOrtho(1280.0f, 720.0f); cameraNode->addComponent(camera); setMainCamera(camera); addChild(cameraNode); } void createImageSprite() { auto spriteNode = makePtr(); spriteNode->setName("ImageSprite"); spriteNode->setPosition(640.0f, 360.0f); spriteNode->setAnchor(0.5f, 0.5f); spriteRenderer_ = makePtr(); 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; } auto director = app->getModule()->getDirector(); if (!director) { printf("获取导演器失败!\n"); return -1; } director->runScene(makePtr()); app->run(); return 0; }