From 74bb9cd27242b9320f99ff4d2b50c3051576cc14 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 8 Feb 2022 16:53:51 +0800 Subject: ... --- .../cru/win/graphics/direct/WindowRenderTarget.h | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 include/cru/win/graphics/direct/WindowRenderTarget.h (limited to 'include/cru/win/graphics/direct/WindowRenderTarget.h') diff --git a/include/cru/win/graphics/direct/WindowRenderTarget.h b/include/cru/win/graphics/direct/WindowRenderTarget.h new file mode 100644 index 00000000..c588f261 --- /dev/null +++ b/include/cru/win/graphics/direct/WindowRenderTarget.h @@ -0,0 +1,43 @@ +#pragma once +#include "Factory.h" + +namespace cru::platform::graphics::win::direct { +// Represents a window render target. +class CRU_WIN_GRAPHICS_DIRECT_API D2DWindowRenderTarget : public Object { + public: + D2DWindowRenderTarget(gsl::not_null factory, + HWND hwnd); + + CRU_DELETE_COPY(D2DWindowRenderTarget) + CRU_DELETE_MOVE(D2DWindowRenderTarget) + + ~D2DWindowRenderTarget() override = default; + + public: + graphics::win::direct::DirectGraphicsFactory* GetDirectFactory() const { + return factory_; + } + + ID2D1DeviceContext1* GetD2D1DeviceContext() { + return d2d1_device_context_.Get(); + } + + void SetDpi(float x, float y); + + // Resize the underlying buffer. + void ResizeBuffer(int width, int height); + + // Present the data of the underlying buffer to the window. + void Present(); + + private: + void CreateTargetBitmap(); + + private: + DirectGraphicsFactory* factory_; + HWND hwnd_; + Microsoft::WRL::ComPtr d2d1_device_context_; + Microsoft::WRL::ComPtr dxgi_swap_chain_; + Microsoft::WRL::ComPtr target_bitmap_; +}; +} // namespace cru::platform::graphics::win::direct -- cgit v1.2.3