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