Files
XCEngine/editor/app/Rendering/D3D12/D3D12EditorWindowRenderRuntime.h

77 lines
3.0 KiB
C++

#pragma once
#ifndef NOMINMAX
#define NOMINMAX
#endif
#include "Rendering/D3D12/D3D12UiRenderer.h"
#include "Rendering/D3D12/D3D12UiTextSystem.h"
#include "Rendering/D3D12/D3D12UiTextureHost.h"
#include "Rendering/D3D12/D3D12WindowRenderLoop.h"
#include "Rendering/D3D12/D3D12WindowRenderer.h"
#include "Rendering/Host/EditorWindowRenderRuntime.h"
#include <memory>
namespace XCEngine::UI::Editor::Host {
class D3D12EditorWindowRenderRuntime final
: public ::XCEngine::UI::Editor::Rendering::Host::EditorWindowRenderRuntime {
public:
D3D12EditorWindowRenderRuntime() = default;
~D3D12EditorWindowRenderRuntime() override;
D3D12EditorWindowRenderRuntime(const D3D12EditorWindowRenderRuntime&) = delete;
D3D12EditorWindowRenderRuntime& operator=(const D3D12EditorWindowRenderRuntime&) = delete;
D3D12EditorWindowRenderRuntime(D3D12EditorWindowRenderRuntime&&) = delete;
D3D12EditorWindowRenderRuntime& operator=(D3D12EditorWindowRenderRuntime&&) = delete;
bool IsReady() const override;
void SetDpiScale(float dpiScale) override;
UIEditorTextMeasurer& GetTextMeasurer() override;
const UIEditorTextMeasurer& GetTextMeasurer() const override;
Rendering::Host::UiTextureHost& GetTextureHost() override;
Rendering::Host::ViewportRenderHost& GetViewportRenderHost() override;
Rendering::Host::EditorWindowRenderRuntimeInitializeResult Initialize(
const Rendering::Host::EditorWindowRenderRuntimeSurface& surface) override;
void WaitForGpuIdle() override;
void Shutdown() override;
Rendering::Host::EditorWindowRenderRuntimeResizeResult ApplyResize(
std::uint32_t width,
std::uint32_t height) override;
Rendering::Host::EditorWindowRenderRuntimeFrameContext BeginFrame() override;
Rendering::Host::EditorWindowRenderRuntimePresentResult Present(
const ::XCEngine::UI::UIDrawData& drawData,
const std::filesystem::path* captureOutputPath) override;
private:
D3D12WindowRenderer m_windowRenderer = {};
D3D12UiTextureHost m_textureHost = {};
D3D12UiTextSystem m_textSystem = {};
D3D12UiRenderer m_uiRenderer = {};
D3D12WindowRenderLoop m_windowRenderLoop = {};
float m_dpiScale = 1.0f;
bool m_ready = false;
};
class D3D12EditorWindowRenderRuntimeFactory final
: public ::XCEngine::UI::Editor::Rendering::Host::EditorWindowRenderRuntimeFactory {
public:
D3D12EditorWindowRenderRuntimeFactory() = default;
~D3D12EditorWindowRenderRuntimeFactory() override = default;
D3D12EditorWindowRenderRuntimeFactory(
const D3D12EditorWindowRenderRuntimeFactory&) = delete;
D3D12EditorWindowRenderRuntimeFactory& operator=(
const D3D12EditorWindowRenderRuntimeFactory&) = delete;
D3D12EditorWindowRenderRuntimeFactory(D3D12EditorWindowRenderRuntimeFactory&&) = delete;
D3D12EditorWindowRenderRuntimeFactory& operator=(
D3D12EditorWindowRenderRuntimeFactory&&) = delete;
std::unique_ptr<Rendering::Host::EditorWindowRenderRuntime>
CreateWindowRenderRuntime() override;
};
} // namespace XCEngine::UI::Editor::Host