#pragma once #include "YBaseLib/Common.h" #if defined(Y_COMPILER_MSVC) #include "YBaseLib/Windows/WindowsHeaders.h" #include "display_renderer.h" #include #include #include #include class DisplayRendererD3D final : public DisplayRenderer { public: DisplayRendererD3D(WindowHandleType window_handle, u32 window_width, u32 window_height); ~DisplayRendererD3D(); BackendType GetBackendType() override; std::unique_ptr CreateDisplay(const char* name, Display::Type type, u8 priority = Display::DEFAULT_PRIORITY) override; void WindowResized(u32 window_width, u32 window_height) override; bool BeginFrame() override; void RenderDisplays() override; void EndFrame() override; ID3D11Device* GetD3DDevice() const { return m_device.Get(); } ID3D11DeviceContext* GetD3DContext() const { return m_context.Get(); } ID3D11VertexShader* GetD3DVertexShader() const { return m_vertex_shader.Get(); } ID3D11PixelShader* GetD3DPixelShader() const { return m_pixel_shader.Get(); } ID3D11RasterizerState* GetD3DRasterizerState() const { return m_rasterizer_state.Get(); } ID3D11DepthStencilState* GetD3DDepthState() const { return m_depth_state.Get(); } ID3D11BlendState* GetD3DBlendState() const { return m_blend_state.Get(); } protected: bool Initialize() override; private: bool CreateRenderTargetView(); Microsoft::WRL::ComPtr m_device = nullptr; Microsoft::WRL::ComPtr m_context = nullptr; Microsoft::WRL::ComPtr m_swap_chain = nullptr; Microsoft::WRL::ComPtr m_swap_chain_rtv = nullptr; Microsoft::WRL::ComPtr m_vertex_shader = nullptr; Microsoft::WRL::ComPtr m_pixel_shader = nullptr; Microsoft::WRL::ComPtr m_rasterizer_state = nullptr; Microsoft::WRL::ComPtr m_depth_state = nullptr; Microsoft::WRL::ComPtr m_blend_state = nullptr; }; #endif