MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_renderer_set.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_RENDERER_SET_H_1606564400
12#define INCGUARD_MGL_RENDERER_SET_H_1606564400
13
15#include <mgl/mgl_environment.h>
19
20namespace MGL::Render
21{
23class RendererSet final : public SharedSingleton<RendererSet>
24{
25public:
27
28 /* ------------------------------------------------------------------------- */
32 /* ------------------------------------------------------------------------- */
33 RendererSet() noexcept = default;
34
35 /* ------------------------------------------------------------------------- */
42 /* ------------------------------------------------------------------------- */
43 bool Initialize(const InitializerDelegate &initializer) noexcept
44 {
45 auto textureGenerator = initializer.MakeTextureGenerator();
46 if (textureGenerator == nullptr)
47 {
48 return false;
49 }
50
51 _textureStorage = STL::make_unique<TextureStorage>(std::move(textureGenerator));
52 if (_textureStorage == nullptr)
53 {
54 return false;
55 }
56
57 auto renderer2D = initializer.MakeRenderer2D();
58 if (renderer2D == nullptr)
59 {
60 return false;
61 }
62 _renderer2D = std::move(renderer2D);
63
64 initializer.MakeTextureLoader(*(_textureStorage.get()));
65
66 return true;
67 }
68
69 /* ------------------------------------------------------------------------- */
75 /* ------------------------------------------------------------------------- */
76 [[nodiscard]] bool CanInitializeRenderer() const noexcept
77 {
78 return _renderer2D->CanInitialize();
79 }
80
81 [[nodiscard]] bool InitializeRenderer() const noexcept
82 {
83 if (_renderer2D == nullptr)
84 {
85 return false;
86 }
87
88 return _renderer2D->Initialize();
89 }
90
91 /* ------------------------------------------------------------------------- */
96 /* ------------------------------------------------------------------------- */
98 {
99 return *(_textureStorage.get());
100 }
101
102 /* ------------------------------------------------------------------------- */
107 /* ------------------------------------------------------------------------- */
109 {
110 return *_renderer2D;
111 }
112
113private:
114 STL::unique_ptr<TextureStorage> _textureStorage;
116};
117
118} // namespace MGL::Render
119#endif // INCGUARD_MGL_RENDERER_SET_H_1606564400
120
121// vim: et ts=4 sw=4 sts=4
イニシャライザデリゲート
Definition mgl_initializer_delegate.h:60
MGL 2Dレンダラデリゲート
Definition mgl_renderer_2d_delegate.h:25
MGL レンダラセット
Definition mgl_renderer_set.h:24
bool CanInitializeRenderer() const noexcept
レンダラが初期化可能かを取得
Definition mgl_renderer_set.h:76
bool Initialize(const InitializerDelegate &initializer) noexcept
初期化処理
Definition mgl_renderer_set.h:43
RendererSet() noexcept=default
コンストラクタ
static STL::unique_ptr< RendererSet > & GetInstanceRef() noexcept
インスタンスの取得
Definition mgl_renderer_set.cc:21
TextureStorage & GetTextureStorage() noexcept
テクスチャストレージの取得
Definition mgl_renderer_set.h:97
Renderer2DDelegate & GetRenderer2D() noexcept
2Dレンダラの取得
Definition mgl_renderer_set.h:108
テクスチャストレージ
Definition mgl_texture_storage.h:48
シングルトンテンプレート(共有ライブラリ用)
Definition mgl_singleton.h:44
MGL 環境定義
MGL イニシャライザデリゲート
MGL 2Dレンダラ デリゲート
MGL STLのメモリ関連の代替
std::unique_ptr< T, Deleter > unique_ptr
MGLのアロケータを利用するユニークポインタ
Definition mgl_stl_memory.h:247
MGL テクスチャストレージ