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