Covellite++  Version: 2.3.0 Revision: ??? Platform: x64 Build: 23:13 04.01.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 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
74private:
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
80private:
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
90private:
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
99public:
100 class Texture;
101
102private:
103 class Buffer;
104 template<class>
105 class ConstantBuffer;
106
107public:
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
115private:
116 friend DirectX11_test;
117 friend DirectX11Texture_test;
118};
119
120FACTORY_REGISTER_STRING_NAME(DirectX11);
121
122} // namespace renderer
123
124} // namespace api
125
126} // namespace covellite
Класс входит в проект Covellite.Api Реализация рендера графического API для Windows/DirectX11.
Definition DirectX11.hpp:51
Render_t GetDepthState(const bool, const bool, const bool)
Definition DirectX11.cpp:1351
Render_t CreateBkSurface(const ComponentPtr_t &) override
Definition DirectX11.cpp:701
Класс входит в проект Covellite.Api Вспомогательный класс, содержащий общий для всех реализаций код...
Definition GraphicApi.hpp:33
Класс для передачи значений настроек программы реализации рендера.
Definition IGraphicApi.hpp:62