Covellite++  Version: 2.3.0 Revision: ??? Platform: x64 Build: 23:13 04.01.2025
Кроссплатформенный фреймворк для разработки приложений на С++
Загрузка...
Поиск...
Не найдено
DirectX10.hpp
1
2#pragma once
3#include <wrl.h>
4#include "GraphicApi.hpp"
5
6struct ID3D10Device;
7struct IDXGISwapChain;
8struct ID3D10RenderTargetView;
9struct ID3D10DepthStencilView;
10struct ID3D10RasterizerState;
11
12namespace covellite
13{
14
15namespace api
16{
17
18namespace renderer
19{
20
47class 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
54public:
55 // Интерфейс IGraphicApi:
56 String_t GetUsingApi(void) const override;
57 void PresentFrame(void) override;
58 void ResizeWindow(const Rect &) override;
59
60protected:
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
71private:
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
79private:
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
90private:
91 class Buffer;
92 template<class>
93 class ConstantBuffer;
94 class Texture;
95
96public:
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
105FACTORY_REGISTER_STRING_NAME(DirectX10);
106
107} // namespace renderer
108
109} // namespace api
110
111} // namespace covellite
Класс входит в проект Covellite.Api Реализация рендера графического API для Windows/DirectX10.
Definition DirectX10.hpp:49
Класс входит в проект Covellite.Api Вспомогательный класс, содержащий общий для всех реализаций код...
Definition GraphicApi.hpp:33
Класс для передачи значений настроек программы реализации рендера.
Definition IGraphicApi.hpp:62