MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_d3d11_line_renderer.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_D3D11_LINE_RENDERER_H_1617429438
12#define INCGUARD_MGL_D3D11_LINE_RENDERER_H_1617429438
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>
24
25namespace MGL::Render::D3D11
26{
29{
30public:
32 struct Attribute
33 {
34 float position[2];
35 float color[4];
36 };
37 static constexpr size_t kAttributeMax = 1024;
38
39 LineRenderer() noexcept;
40
41 virtual bool Initialize() noexcept override;
42 virtual void Flush(const FlushParameter &flushParameter) noexcept override;
43
44 /* ------------------------------------------------------------------------- */
50 /* ------------------------------------------------------------------------- */
51 constexpr bool IsFull() const noexcept
52 {
53 return _attributeCount >= (kAttributeMax - 1);
54 }
55
56 void Add(const Vector2 &start, const Vector2 &end, const Color &color, const FlushParameter &flushParameter) noexcept;
57
58private:
59 bool InitializeShader() noexcept;
60 bool InitializeVertexBuffer() noexcept;
61
62 bool _isAvailable;
63
64 std::array<Attribute, kAttributeMax> _attributes;
65 size_t _attributeCount;
66
67 CComPtr<ID3D11VertexShader> _vertexShader;
68 CComPtr<ID3D11PixelShader> _pixelShader;
69 CComPtr<ID3D11InputLayout> _inputLayout;
70 CComPtr<ID3D11Buffer> _vertexBuffer;
71};
72} // MGL::Render::D3D11
73
74#endif // MGL_RENDERER_ENABLE_D3D11
75#endif // INCGUARD_MGL_D3D11_LINE_RENDERER_H_1617429438
76
77// vim: et ts=4 sw=4 sts=4
Direct3D11用ラインレンダラ
Definition mgl_d3d11_line_renderer.h:29
void Add(const Vector2 &start, const Vector2 &end, const Color &color, const FlushParameter &flushParameter) noexcept
アトリビュートの追加
Definition mgl_d3d11_line_renderer.cc:143
LineRenderer() noexcept
コンストラクタ
Definition mgl_d3d11_line_renderer.cc:30
virtual void Flush(const FlushParameter &flushParameter) noexcept override
描画の実行
Definition mgl_d3d11_line_renderer.cc:83
virtual bool Initialize() noexcept override
初期化処理
Definition mgl_d3d11_line_renderer.cc:49
static constexpr size_t kAttributeMax
アトリビュートの最大数
Definition mgl_d3d11_line_renderer.h:37
constexpr bool IsFull() const noexcept
アトリビュートのストックが上限に達しているかを取得
Definition mgl_d3d11_line_renderer.h:51
Direct3D11用オブジェクトレンダラ基底クラス
Definition mgl_d3d11_object_renderer.h:23
MGL 色情報
MGL Direct3D11用オブジェクトレンダラ基底クラス
MGL 環境定義
MGL 2Dベクトル
色情報
Definition mgl_color.h:22
ライン用アトリビュート
Definition mgl_d3d11_line_renderer.h:33
float position[2]
座標
Definition mgl_d3d11_line_renderer.h:34
float color[4]
Definition mgl_d3d11_line_renderer.h:35
描画に使用するパラメータ
Definition mgl_d3d11_object_renderer.h:27
2Dベクトル
Definition mgl_vector2.h:23