MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_d3d11_rectangle_renderer.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_D3D11_RECTANGLE_RENDERER_H_1614932332
12#define INCGUARD_MGL_D3D11_RECTANGLE_RENDERER_H_1614932332
13
14#include <mgl/mgl_environment.h>
15#if defined(MGL_RENDERER_ENABLE_D3D11)
16
17#include <array>
18#include <atlbase.h>
19#include <d3d11_1.h>
21#include <vector>
22
23namespace MGL::Render::D3D11
24{
27{
28public:
30 struct Attribute
31 {
32 float offset[4];
33 float scale[4];
34 float color[4];
35 float rotate;
36 float pivot[2];
37 float unused;
38 };
39 static constexpr size_t kAttributeMax = 1024;
40
41 RectangleRenderer() noexcept;
42
43 virtual bool Initialize() noexcept override;
44 virtual void Flush(const FlushParameter &flushParameter) noexcept override;
45
46 void Add(const Attribute &attribute, const FlushParameter &flushParameter) noexcept;
47
48 /* ------------------------------------------------------------------------- */
54 /* ------------------------------------------------------------------------- */
55 bool IsFull() const noexcept
56 {
57 return _attributeCount >= kAttributeMax;
58 }
59
60private:
61 bool InitializeShader() noexcept;
62 bool InitializeVertexBuffer() noexcept;
63 ID3D11VertexShader *GetVertexShader(size_t size) noexcept;
64
65 bool _isAvailable;
66
67 std::array<Attribute, kAttributeMax> _attributes;
68 size_t _attributeCount;
69
70 struct VertexShader
71 {
72 size_t size;
73 CComPtr<ID3D11VertexShader> shader;
74 };
75 std::vector<VertexShader> _vertexShaderArray;
76 CComPtr<ID3D11PixelShader> _pixelShader;
77 CComPtr<ID3D11InputLayout> _inputLayout;
78 CComPtr<ID3D11Buffer> _vertexBuffer;
79};
80} // namespace MGL::Render::D3D11
81
82#endif // MGL_RENDERER_ENABLE_D3D11
83#endif // INCGUARD_MGL_D3D11_RECTANGLE_RENDERER_H_1614932332
84
85// vim: et ts=4 sw=4 sts=4
Direct3D11用オブジェクトレンダラ基底クラス
Definition mgl_d3d11_object_renderer.h:23
Direct3D11用矩形レンダラ
Definition mgl_d3d11_rectangle_renderer.h:27
void Add(const Attribute &attribute, const FlushParameter &flushParameter) noexcept
アトリビュートの追加
Definition mgl_d3d11_rectangle_renderer.cc:158
bool IsFull() const noexcept
アトリビュートのストックが上限に達しているかを取得
Definition mgl_d3d11_rectangle_renderer.h:55
virtual bool Initialize() noexcept override
初期化処理
Definition mgl_d3d11_rectangle_renderer.cc:67
static constexpr size_t kAttributeMax
アトリビュートの最大数
Definition mgl_d3d11_rectangle_renderer.h:39
RectangleRenderer() noexcept
コンストラクタ
Definition mgl_d3d11_rectangle_renderer.cc:48
virtual void Flush(const FlushParameter &flushParameter) noexcept override
描画の実行
Definition mgl_d3d11_rectangle_renderer.cc:101
MGL Direct3D11用オブジェクトレンダラ基底クラス
MGL 環境定義
描画に使用するパラメータ
Definition mgl_d3d11_object_renderer.h:27
矩形用アトリビュート
Definition mgl_d3d11_rectangle_renderer.h:31
float offset[4]
オフセット(表示位置)
Definition mgl_d3d11_rectangle_renderer.h:32
float scale[4]
スケール値
Definition mgl_d3d11_rectangle_renderer.h:33
float color[4]
Definition mgl_d3d11_rectangle_renderer.h:34
float pivot[2]
回転ピボット
Definition mgl_d3d11_rectangle_renderer.h:36
float rotate
回転角度
Definition mgl_d3d11_rectangle_renderer.h:35
float unused
未使用
Definition mgl_d3d11_rectangle_renderer.h:37