77 lines
3.0 KiB
C++
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
|