refactor(示例): 将纹理加载逻辑从事件监听移至更新循环
简化图像显示示例的纹理加载机制,移除对事件系统的依赖。 改为在每帧更新时检查纹理是否已加载,避免在渲染事件中设置纹理, 使代码更直观并减少不必要的监听器管理。
This commit is contained in:
parent
3686ba35c1
commit
dafcf9bfef
|
|
@ -1,5 +1,4 @@
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <event/events.h>
|
|
||||||
#include <extra2d.h>
|
#include <extra2d.h>
|
||||||
#include <renderer/rhi_module.h>
|
#include <renderer/rhi_module.h>
|
||||||
|
|
||||||
|
|
@ -11,16 +10,18 @@ public:
|
||||||
Scene::onEnter();
|
Scene::onEnter();
|
||||||
createCamera();
|
createCamera();
|
||||||
createImageSprite();
|
createImageSprite();
|
||||||
onRenderBeginListener_.bind([this]() { trySetupTexture(); });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void onExit() override {
|
void update(float dt) override {
|
||||||
onRenderBeginListener_.reset();
|
Scene::update(dt);
|
||||||
Scene::onExit();
|
trySetupTexture();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void trySetupTexture() {
|
void trySetupTexture() {
|
||||||
|
if (textureLoaded_) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
auto *rhiModule = RHIModule::get();
|
auto *rhiModule = RHIModule::get();
|
||||||
if (!rhiModule || !rhiModule->getDevice()) {
|
if (!rhiModule || !rhiModule->getDevice()) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -32,7 +33,7 @@ private:
|
||||||
auto texture = assets->load<Texture>("assets/test.png");
|
auto texture = assets->load<Texture>("assets/test.png");
|
||||||
if (texture.isValid()) {
|
if (texture.isValid()) {
|
||||||
spriteRenderer_->setTexture(texture);
|
spriteRenderer_->setTexture(texture);
|
||||||
onRenderBeginListener_.reset();
|
textureLoaded_ = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void createCamera() {
|
void createCamera() {
|
||||||
|
|
@ -56,7 +57,7 @@ private:
|
||||||
addChild(spriteNode);
|
addChild(spriteNode);
|
||||||
}
|
}
|
||||||
Ptr<SpriteRenderer> spriteRenderer_;
|
Ptr<SpriteRenderer> spriteRenderer_;
|
||||||
events::OnRenderBegin::Listener onRenderBeginListener_;
|
bool textureLoaded_ = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue