2D scene rendering + image loading #15

Merged
burkkyy merged 18 commits from issue-14/2d-scene-support-spritecomponent-2d-render-system into main 2026-09-30 15:56:33 -07:00
5 changed files with 13 additions and 12 deletions
Showing only changes of commit 0f9c7ffc20 - Show all commits
+1 -1
View File
@@ -28,7 +28,7 @@ class Editor : public sophia::Application {
panels().emplace<AssetBrowserPanel>(); panels().emplace<AssetBrowserPanel>();
sophia::RenderTargetHandle sceneTarget = sophia::RenderTargetHandle sceneTarget =
resources().create<sophia::RenderTarget>(); resources().create<sophia::RenderTarget>();
views().create({.scene = sceneHandle, .target = sceneTarget}); sceneViews().create({.scene = sceneHandle, .target = sceneTarget});
panels().emplace<ViewportPanel>(ui(), sceneTarget, scene, selected); panels().emplace<ViewportPanel>(ui(), sceneTarget, scene, selected);
panels().setDefaultLayout( panels().setDefaultLayout(
+1 -1
View File
@@ -47,7 +47,7 @@ class Application {
ResourceRegistryRef resources(); ResourceRegistryRef resources();
PanelRegistry& panels() { return this->panelRegistry; } PanelRegistry& panels() { return this->panelRegistry; }
SceneRegistry& scenes() { return this->sceneRegistry; } SceneRegistry& scenes() { return this->sceneRegistry; }
SceneViewRegistry& views() { return this->sceneViewRegistry; } SceneViewRegistry& sceneViews() { return this->sceneViewRegistry; }
UI& ui() { return this->_ui; } UI& ui() { return this->_ui; }
DebugUI& debugUI() { return this->_debugUI; } DebugUI& debugUI() { return this->_debugUI; }
+3 -3
View File
@@ -126,9 +126,9 @@ class Boids2D : public sophia::Application {
} }
target = resources().create<sophia::RenderTarget>(); target = resources().create<sophia::RenderTarget>();
views().create({.scene = sceneHandle, sceneViews().create({.scene = sceneHandle,
.target = target, .target = target,
.clearColor = {0.01f, 0.01f, 0.02f, 1.0f}}); .clearColor = {0.01f, 0.01f, 0.02f, 1.0f}});
panels().emplace<ViewportPanel>(ui(), target); panels().emplace<ViewportPanel>(ui(), target);
panels().setDefaultLayout({.center = {"Boids"}}); panels().setDefaultLayout({.center = {"Boids"}});
+3 -3
View File
@@ -51,9 +51,9 @@ class ImageViewer : public sophia::Application {
sophia::SpriteComponent{.texture = texture, .size = imageSize}); sophia::SpriteComponent{.texture = texture, .size = imageSize});
target = resources().create<sophia::RenderTarget>(); target = resources().create<sophia::RenderTarget>();
views().create({.scene = sceneHandle, sceneViews().create({.scene = sceneHandle,
.target = target, .target = target,
.clearColor = {0.1f, 0.1f, 0.15f, 1.f}}); .clearColor = {0.1f, 0.1f, 0.15f, 1.f}});
panels().emplace<ViewportPanel>(ui(), target); panels().emplace<ViewportPanel>(ui(), target);
// panels().setDefaultLayout({.center = {"Image"}}); // panels().setDefaultLayout({.center = {"Image"}});
+5 -4
View File
@@ -27,11 +27,12 @@ class Testbed : public sophia::Application {
Testbed() : Application{{.width = 750, .height = 1000, .name = "Testbed"}} {} Testbed() : Application{{.width = 750, .height = 1000, .name = "Testbed"}} {}
void onCreate() override { void onCreate() override {
view = views().create({.scene = scenes().create(), view = sceneViews().create(
.target = resources().create<sophia::RenderTarget>(), {.scene = scenes().create(),
.clearColor = {0.1f, 0.1f, 0.15f, 1.f}}); .target = resources().create<sophia::RenderTarget>(),
.clearColor = {0.1f, 0.1f, 0.15f, 1.f}});
panels().emplace<Viewport>(ui(), views().get(view).target); panels().emplace<Viewport>(ui(), sceneViews().get(view).target);
} }
private: private: