sead
Loading...
Searching...
No Matches
seadFrameBuffer.h
Go to the documentation of this file.
1#ifndef SEAD_FRAME_BUFFER_H_
2#define SEAD_FRAME_BUFFER_H_
3
4#include <gfx/seadColor.h>
5#include <math/seadBoundBox.h>
6#include <math/seadVector.h>
7#include <prim/seadRuntimeTypeInfo.h>
8
9namespace sead {
10
12{
14
15public:
17 : mVirtualSize(1.0f, 1.0f)
18 , mPhysicalArea(0.0f, 0.0f, 1.0f, 1.0f)
19 {
20 }
21
22 LogicalFrameBuffer(const Vector2f& virtual_size, const BoundBox2f& physical_area)
23 : mVirtualSize(virtual_size)
24 , mPhysicalArea(physical_area)
25 {
26 }
27
28 LogicalFrameBuffer(const Vector2f& virtual_size, f32 physical_x, f32 physical_y, f32 physical_w, f32 physical_h)
29 : mVirtualSize(virtual_size)
30 , mPhysicalArea(physical_x, physical_y, physical_x + physical_w, physical_y + physical_h)
31 {
32 }
33
34 LogicalFrameBuffer(const Vector2f& virtual_size, f32 physical_x, f32 physical_y, u32 physical_w, u32 physical_h)
35 : mVirtualSize(virtual_size)
36 , mPhysicalArea(physical_x, physical_y, physical_x + f32(physical_w), physical_y + f32(physical_h))
37 {
38 }
39
41 {
42 }
43
44 const Vector2f& getVirtualSize() const
45 {
46 return mVirtualSize;
47 }
48
50 {
51 return mPhysicalArea;
52 }
53
54 void setVirtualSize(f32 x, f32 y)
55 {
56 mVirtualSize.set(x, y);
57 }
58
59 void setVirtualSize(const Vector2f& virtual_size)
60 {
61 mVirtualSize = virtual_size;
62 }
63
64 void setPhysicalArea(const BoundBox2f& ph_size)
65 {
66 mPhysicalArea.set(ph_size.getMin(), ph_size.getMax());
67 }
68
69 void setPhysicalArea(f32 x, f32 y, f32 w, f32 h)
70 {
71 mPhysicalArea.set(x, y, x + w, y + h);
72 }
73
74 void setPhysicalArea(f32 x, f32 y, u32 w, u32 h)
75 {
76 mPhysicalArea.set(x, y, x + f32(w), y + f32(h));
77 }
78
79protected:
82};
83#ifdef cafe
84static_assert(sizeof(LogicalFrameBuffer) == 0x1C, "sead::LogicalFrameBuffer size mismatch");
85#endif // cafe
86
87class DisplayBuffer;
88
90{
92
93public:
98
99 FrameBuffer(const Vector2f& virtual_size, const BoundBox2f& physical_area)
100 : LogicalFrameBuffer(virtual_size, physical_area)
101 {
102 }
103
104 FrameBuffer(const Vector2f& virtual_size, f32 physical_x, f32 physical_y, f32 physical_w, f32 physical_h)
105 : LogicalFrameBuffer(virtual_size, physical_x, physical_y, physical_w, physical_h)
106 {
107 }
108
109 FrameBuffer(const Vector2f& virtual_size, f32 physical_x, f32 physical_y, u32 physical_w, u32 physical_h)
110 : LogicalFrameBuffer(virtual_size, physical_x, physical_y, physical_w, physical_h)
111 {
112 }
113
114 virtual void copyToDisplayBuffer(const DisplayBuffer* display_buffer) const
115 {
116 }
117
118 virtual void clear(u32 clr_flag, const Color4f& color, f32 depth, u32 stencil) const = 0;
119 virtual void clearMRT(u32 target, const Color4f& color) const;
120
121protected:
122 virtual void bindImpl_() const = 0;
123
124public:
125 void bind() const;
126};
127#ifdef cafe
128static_assert(sizeof(FrameBuffer) == 0x1C, "sead::FrameBuffer size mismatch");
129#endif // cafe
130
131class Heap;
132
134{
136
137public:
139 : mWidth(0.0f)
140 , mHeight(0.0f)
141 {
142 }
143
144 virtual void initializeImpl_(sead::Heap* heap) = 0;
145
146protected:
149};
150#ifdef cafe
151static_assert(sizeof(DisplayBuffer) == 0xC, "sead::DisplayBuffer size mismatch");
152#endif // cafe
153
154} // namespace sead
155
156#endif // SEAD_FRAME_BUFFER_H_
Definition seadFrameBuffer.h:134
DisplayBuffer()
Definition seadFrameBuffer.h:138
f32 mHeight
Definition seadFrameBuffer.h:148
virtual void initializeImpl_(sead::Heap *heap)=0
f32 mWidth
Definition seadFrameBuffer.h:147
Definition seadFrameBuffer.h:90
void bind() const
Definition seadFrameBuffer.cpp:9
FrameBuffer(const Vector2f &virtual_size, const BoundBox2f &physical_area)
Definition seadFrameBuffer.h:99
virtual void bindImpl_() const =0
virtual void clearMRT(u32 target, const Color4f &color) const
Definition seadFrameBuffer.cpp:5
virtual void clear(u32 clr_flag, const Color4f &color, f32 depth, u32 stencil) const =0
FrameBuffer()
Definition seadFrameBuffer.h:94
virtual void copyToDisplayBuffer(const DisplayBuffer *display_buffer) const
Definition seadFrameBuffer.h:114
FrameBuffer(const Vector2f &virtual_size, f32 physical_x, f32 physical_y, f32 physical_w, f32 physical_h)
Definition seadFrameBuffer.h:104
Definition seadHeap.h:23
Definition seadFrameBuffer.h:12
void setPhysicalArea(f32 x, f32 y, f32 w, f32 h)
Definition seadFrameBuffer.h:69
const Vector2f & getVirtualSize() const
Definition seadFrameBuffer.h:44
void setVirtualSize(const Vector2f &virtual_size)
Definition seadFrameBuffer.h:59
void setVirtualSize(f32 x, f32 y)
Definition seadFrameBuffer.h:54
BoundBox2f mPhysicalArea
Definition seadFrameBuffer.h:81
LogicalFrameBuffer(const Vector2f &virtual_size, const BoundBox2f &physical_area)
Definition seadFrameBuffer.h:22
const BoundBox2f & getPhysicalArea() const
Definition seadFrameBuffer.h:49
virtual ~LogicalFrameBuffer()
Definition seadFrameBuffer.h:40
Vector2f mVirtualSize
Definition seadFrameBuffer.h:80
LogicalFrameBuffer(const Vector2f &virtual_size, f32 physical_x, f32 physical_y, f32 physical_w, f32 physical_h)
Definition seadFrameBuffer.h:28
LogicalFrameBuffer()
Definition seadFrameBuffer.h:16
void setPhysicalArea(const BoundBox2f &ph_size)
Definition seadFrameBuffer.h:64
Definition seadAssert.h:44
Vector2< f32 > Vector2f
Definition seadVector.h:238
BoundBox2< f32 > BoundBox2f
Definition seadBoundBox.h:187
#define SEAD_RTTI_OVERRIDE(CLASS, BASE)
Definition seadRuntimeTypeInfo.h:96
#define SEAD_RTTI_BASE(CLASS)
Definition seadRuntimeTypeInfo.h:75
Definition seadColor.h:9