Covellite++  Version: 2.3.0 Revision: 2580 Platform: x64 Build: 15:23 16.10.2020
Кроссплатформенный фреймворк для разработки приложений на С++
DirectX11.hpp
1 
2 #pragma once
3 #include <wrl.h>
4 #include "GraphicApi.hpp"
5 
6 struct ID3D11Device;
7 struct ID3D11DeviceContext;
8 struct IDXGISwapChain;
9 struct ID3D11RenderTargetView;
10 struct ID3D11Buffer;
11 struct ID3D11DepthStencilView;
12 class DirectX11_test;
13 class DirectX11Texture_test;
14 
15 namespace covellite
16 {
17 
18 namespace api
19 {
20 
21 namespace renderer
22 {
23 
49 class DirectX11 final :
50  public GraphicApi
51 {
52  template<class T>
53  using ComPtr_t = ::Microsoft::WRL::ComPtr<T>;
54  using Renders_t = ::std::vector<Render_t>;
56 
57 public:
58  // Интерфейс IGraphicApi:
59  String_t GetUsingApi(void) const override;
60  void PresentFrame(void) override;
61  void ResizeWindow(const Rect &) override;
62 
63 protected:
64  // Интерфейс GraphicApi:
65  Render_t CreateCamera(const ComponentPtr_t &) override;
66  Render_t CreateBkSurface(const ComponentPtr_t &) override;
67  Render_t CreateState(const ComponentPtr_t &) override;
68  Render_t CreateTexture(const ComponentPtr_t &) override;
69  Render_t CreateShader(const ComponentPtr_t &) override;
70  Render_t CreateBuffer(const ComponentPtr_t &) override;
71  Render_t CreateTransform(const ComponentPtr_t &) override;
72  Render_t CreatePresentBuffer(const ComponentPtr_t &) override;
73 
74 private:
75  void CreateDeviceAndSwapChain(const Data_t &);
76  void SetRenderTargetSize(const UINT, const UINT);
77  void CreateRenderTargetView(const UINT, const UINT);
78  void CreateDepthStencilView(const UINT, const UINT);
79 
80 private:
81  Render_t CreateBlendState(bool);
82  Render_t GetDepthState(const bool, const bool, const bool);
83  template<class>
84  Render_t CreateDefaultTransformRender(const ComponentPtr_t &);
85  template<class>
86  Render_t CreateStaticTransformRender(const ComponentPtr_t &);
87  template<class, class>
88  Render_t CreateBillboardTransformRender(const ComponentPtr_t &);
89 
90 private:
91  ComPtr_t<ID3D11Device> m_pDevice;
92  ComPtr_t<ID3D11DeviceContext> m_pImmediateContext;
93  ComPtr_t<IDXGISwapChain> m_pSwapChain;
94  ComPtr_t<ID3D11RenderTargetView> m_pScreenRenderTargetView;
95  ComPtr_t<ID3D11DepthStencilView> m_pScreenDepthStencilView;
96  ::std::vector<ID3D11RenderTargetView *> m_CurrentRenderTargets;
97  ComPtr_t<ID3D11DepthStencilView> m_pCurrentDepthStencilView;
98 
99 public:
100  class Texture;
101 
102 private:
103  class Buffer;
104  template<class>
105  class ConstantBuffer;
106 
107 public:
108  explicit DirectX11(const Data_t &);
109  DirectX11(const DirectX11 &) = delete;
110  DirectX11(DirectX11 &&) = delete;
111  DirectX11 & operator= (const DirectX11 &) = delete;
112  DirectX11 & operator= (DirectX11 &&) = delete;
113  ~DirectX11(void);
114 
115 private:
116  friend DirectX11_test;
117  friend DirectX11Texture_test;
118 };
119 
120 FACTORY_REGISTER_STRING_NAME(DirectX11);
121 
122 } // namespace renderer
123 
124 } // namespace api
125 
126 } // namespace covellite
covellite::api::renderer::GraphicApi
Класс входит в проект Covellite.Api Вспомогательный класс, содержащий общий для всех реализаций код...
Definition: GraphicApi.hpp:33
covellite::api::Component::Make
static ComponentPtr_t Make(const SourceParams_t &)
Функция создания объектов компонентов.
Definition: Component.inl:29
covellite::api::renderer::DirectX11::CreateBkSurface
Render_t CreateBkSurface(const ComponentPtr_t &) override
Definition: DirectX11.cpp:701
DX_CHECK
#define DX_CHECK
Класс входит в проект Covellite.Api Макрос проверок вызова функций DirectX.
Definition: DxCheck.hpp:59
covellite::api::Vertex
Класс входит в проект Covellite.Api Класс формата вертексного буфера.
Definition: Vertex.hpp:34
covellite::api::renderer::DirectX11
Класс входит в проект Covellite.Api Реализация рендера графического API для Windows/DirectX11.
Definition: DirectX11.hpp:51
covellite::api::renderer::DirectX11::GetDepthState
Render_t GetDepthState(const bool, const bool, const bool)
Definition: DirectX11.cpp:1351
covellite::api::renderer::SettingsData
Класс для передачи значений настроек программы реализации рендера.
Definition: IGraphicApi.hpp:62