Engine API Enhancements

This commit is contained in:
Isuru Samarathunga
2025-10-08 00:45:02 +05:30
parent 57c4309cf2
commit 1f9d5426b8
13 changed files with 205 additions and 141 deletions

View File

@ -19,6 +19,8 @@
#include <Renderer/EmbeddedShader.hpp>
#include <Renderer/Renderer.hpp>
#include <WorldManager.hpp>
#include <backends/imgui_impl_sdl3.h>
#include <backends/imgui_impl_sdlgpu3.h>
@ -88,7 +90,7 @@ namespace ia::iae
DebugDraw::Initialize();
s_state.ColorTargetInfo.clear_color = SDL_FColor{0.33f, 0.33f, 0.33f, 1.0f};
s_state.ColorTargetInfo.clear_color = SDL_FColor{0.0f, 0.0f, 0.0f, 1.0f};
s_state.ColorTargetInfo.load_op = SDL_GPU_LOADOP_CLEAR;
s_state.ColorTargetInfo.store_op = SDL_GPU_STOREOP_STORE;
@ -138,6 +140,8 @@ namespace ia::iae
if (!(s_state.ActiveCommandBuffer = SDL_AcquireGPUCommandBuffer(s_gpuDevice)))
THROW_UNKNOWN("Failed to acquire SDL GPU command buffer: ", SDL_GetError());
const auto clearColor = WorldManager::GetActiveScene()->BackgroundColor().GetAsFloatVec();
s_state.ColorTargetInfo.clear_color = SDL_FColor{clearColor.x, clearColor.y, clearColor.z, 1.0f};
s_state.ColorTargetInfo.texture = s_renderTargetSceneColor;
s_state.DepthStencilTargetInfo.texture = s_renderTargetSceneDepth;
s_state.ActiveRenderPass = SDL_BeginGPURenderPass(s_state.ActiveCommandBuffer, &s_state.ColorTargetInfo, 1,
@ -160,6 +164,8 @@ namespace ia::iae
DebugDraw::Render();
const auto imDrawData = ImGui::GetDrawData();
ImGui_ImplSDLGPU3_PrepareDrawData(imDrawData, s_state.ActiveCommandBuffer);
s_state.ColorTargetInfo.load_op = SDL_GPU_LOADOP_CLEAR;
s_state.ColorTargetInfo.clear_color = SDL_FColor{0.0f, 0.0f, 0.0f, 0.0f};
s_state.ColorTargetInfo.texture = s_renderTargetDebugDrawColor;
s_state.ActiveRenderPass =
SDL_BeginGPURenderPass(s_state.ActiveCommandBuffer, &s_state.ColorTargetInfo, 1, nullptr);
@ -174,6 +180,8 @@ namespace ia::iae
if (!swapChainTexture)
return;
s_state.ColorTargetInfo.clear_color = SDL_FColor{1.0f, 1.0f, 1.0f, 1.0f};
s_state.ColorTargetInfo.load_op = SDL_GPU_LOADOP_CLEAR;
s_state.ColorTargetInfo.texture = swapChainTexture;
s_state.ActiveRenderPass =
@ -285,6 +293,11 @@ namespace ia::iae
namespace ia::iae
{
IVec2 Engine::GetDisplayExtent()
{
return IVec2(Renderer::s_screenWidth, Renderer::s_screenHeight);
}
VOID Engine::SetActiveCamera(IN CameraComponent *cameraComponent)
{
Renderer::s_state.ActiveCamera = cameraComponent;