Covellite++  Version: 2.3.1 Revision: ??? Platform: x64 Build: 21:47 08.04.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 CreateTextureArray(const ComponentPtr_t &) override { throw STD_EXCEPTION << "Not Release!!!"; }
67 Render_t CreateShader(const ComponentPtr_t &) override;
68 Render_t CreateBuffer(const ComponentPtr_t &) override;
69 Render_t CreateTransform(const ComponentPtr_t &) override;
70 Render_t CreatePresentBuffer(const ComponentPtr_t &) override;
71
72private:
73 void SetViewport(const UINT, const UINT);
74 Render_t CreateBlendState(bool);
75 Render_t GetDepthState(bool, bool, bool);
76 Render_t CreateBasePreRenderGeometry(const ComponentPtr_t &);
77 Render_t CreateStaticPreRenderGeometry(const ComponentPtr_t &);
78 Render_t CreateBillboardPreRenderGeometry(const ComponentPtr_t &);
79
80private:
81 ComPtr_t<ID3D10Device> m_pDevice;
82 ComPtr_t<IDXGISwapChain> m_pSwapChain;
83 ComPtr_t<ID3D10RasterizerState> m_pDefaultRasterizerState;
84 // Screen render targets
85 ComPtr_t<ID3D10RenderTargetView> m_pScreenRenderTargetView;
86 ComPtr_t<ID3D10DepthStencilView> m_pScreenDepthStencilView;
87 // Active render targets
88 ::std::vector<ID3D10RenderTargetView *> m_CurrentRenderTargets;
89 ComPtr_t<ID3D10DepthStencilView> m_pCurrentDepthStencilView;
90
91private:
92 class Buffer;
93 template<class>
94 class ConstantBuffer;
95 class Texture;
96
97public:
98 explicit DirectX10(const Data_t &);
99 DirectX10(const DirectX10 &) = delete;
100 DirectX10(DirectX10 &&) = delete;
101 DirectX10 & operator= (const DirectX10 &) = delete;
102 DirectX10 & operator= (DirectX10 &&) = delete;
103 ~DirectX10(void);
104};
105
106FACTORY_REGISTER_STRING_NAME(DirectX10);
107
108} // namespace renderer
109
110} // namespace api
111
112} // namespace covellite
Класс входит в проект Covellite.Api Реализация рендера графического API для Windows/DirectX10.
Definition DirectX10.hpp:49
Класс входит в проект Covellite.Api Вспомогательный класс, содержащий общий для всех реализаций код...
Definition GraphicApi.hpp:33
Класс для передачи значений настроек программы реализации рендера.
Definition IGraphicApi.hpp:62