Covellite++  Version: 2.3.1 Revision: ??? Platform: x64 Build: 21:47 08.04.2025
Кроссплатформенный фреймворк для разработки приложений на С++
Загрузка...
Поиск...
Не найдено
DirectX11.hpp
1
2#pragma once
3#include <wrl.h>
4#include "GraphicApi.hpp"
5
6struct ID3D11Device;
7struct ID3D11DeviceContext;
8struct IDXGISwapChain;
9struct ID3D11RenderTargetView;
10struct ID3D11Buffer;
11struct ID3D11DepthStencilView;
12class DirectX11_test;
13class DirectX11Texture_test;
14
15namespace covellite
16{
17
18namespace api
19{
20
21namespace renderer
22{
23
49class 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
57public:
58 // Интерфейс IGraphicApi:
59 String_t GetUsingApi(void) const override;
60 void PresentFrame(void) override;
61 void ResizeWindow(const Rect &) override;
62
63protected:
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 CreateTextureArray(const ComponentPtr_t &) override;
70 Render_t CreateShader(const ComponentPtr_t &) override;
71 Render_t CreateBuffer(const ComponentPtr_t &) override;
72 Render_t CreateTransform(const ComponentPtr_t &) override;
73 Render_t CreatePresentBuffer(const ComponentPtr_t &) override;
74
75private:
76 void CreateDeviceAndSwapChain(const Data_t &);
77 void SetRenderTargetSize(const UINT, const UINT);
78 void CreateRenderTargetView(const UINT, const UINT);
79 void CreateDepthStencilView(const UINT, const UINT);
80
81private:
82 Render_t CreateBlendState(bool);
83 Render_t GetDepthState(const bool, const bool, const bool);
84 template<class>
85 Render_t CreateDefaultTransformRender(const ComponentPtr_t &);
86 template<class>
87 Render_t CreateStaticTransformRender(const ComponentPtr_t &);
88 template<class, class>
89 Render_t CreateBillboardTransformRender(const ComponentPtr_t &);
90
91private:
92 ComPtr_t<ID3D11Device> m_pDevice;
93 ComPtr_t<ID3D11DeviceContext> m_pImmediateContext;
94 ComPtr_t<IDXGISwapChain> m_pSwapChain;
95 ComPtr_t<ID3D11RenderTargetView> m_pScreenRenderTargetView;
96 ComPtr_t<ID3D11DepthStencilView> m_pScreenDepthStencilView;
97 ::std::vector<ID3D11RenderTargetView *> m_CurrentRenderTargets;
98 ComPtr_t<ID3D11DepthStencilView> m_pCurrentDepthStencilView;
99
100public:
101 class Texture;
102
103private:
104 class Buffer;
105 template<class>
106 class ConstantBuffer;
107
108public:
109 explicit DirectX11(const Data_t &);
110 DirectX11(const DirectX11 &) = delete;
111 DirectX11(DirectX11 &&) = delete;
112 DirectX11 & operator= (const DirectX11 &) = delete;
113 DirectX11 & operator= (DirectX11 &&) = delete;
114 ~DirectX11(void);
115
116private:
117 friend DirectX11_test;
118 friend DirectX11Texture_test;
119};
120
121FACTORY_REGISTER_STRING_NAME(DirectX11);
122
123} // namespace renderer
124
125} // namespace api
126
127} // namespace covellite
Класс входит в проект Covellite.Api Реализация рендера графического API для Windows/DirectX11.
Definition DirectX11.hpp:51
Render_t GetDepthState(const bool, const bool, const bool)
Definition DirectX11.cpp:1392
Render_t CreateBkSurface(const ComponentPtr_t &) override
Definition DirectX11.cpp:706
Класс входит в проект Covellite.Api Вспомогательный класс, содержащий общий для всех реализаций код...
Definition GraphicApi.hpp:33
Класс для передачи значений настроек программы реализации рендера.
Definition IGraphicApi.hpp:62