sead
Loading...
Searching...
No Matches
aglRenderer.h
Go to the documentation of this file.
1#pragma once
2
3#include <common/aglTextureEnum.h>
4#include <container/seadBuffer.h>
5#include <container/seadPtrArray.h>
6#include <container/seadSafeArray.h>
7#include <heap/seadDisposer.h>
8#include <layer/aglLayerEnum.h>
9#include <math/seadVector.h>
10#include <thread/seadCriticalSection.h>
11
12namespace sead {
13
14class Controller;
15
16}
17
18namespace agl {
19
20class RenderBuffer;
21
22namespace lyr {
23
24class DrawMethod;
25class Layer;
26
28{
30
31public:
33 virtual ~Renderer();
34
35 bool draw(DisplayType display_type) const;
36
37 void removeDrawMethod(const DrawMethod* p_draw_method);
38
39 template <typename T>
40 T* createLayer(s32 layer_index, const sead::SafeString& name, DisplayType display_type, sead::Heap* heap);
41
42 RenderBuffer* getRenderBuffer(s32 index) const { return mRenderBuffer[index]; }
43
44 s32 getLayerNum() const { return mLayer.size(); }
45 Layer* const& getLayer(s32 index) const { return mLayer[index]; }
46
47 template <typename T>
48 T* getLayer(s32 index) const
49 {
50 return sead::DynamicCast<T>(mLayer[index]);
51 }
52
53protected:
54 void initLayer_(Layer* p_layer, s32 layer_index, const sead::SafeString& name, DisplayType display_type, sead::Heap* heap);
55
56 bool isDisplayList_() const;
57
58protected:
61 sead::UnsafeArray<u32[0x6C4 / sizeof(u32)], cDisplayType_Max> mRenderDisplay; // sead::UnsafeArray<agl::lyr::RenderDisplay, cDisplayType_Max>
66 u8 _db8[16];
68 sead::UnsafeArray<u32[0x64 / sizeof(u32)], 2> mJobQueue; // sead::UnsafeArray<sead::FixedSizeJQ, 2>
69 sead::UnsafeArray<sead::PtrArrayImpl, cDisplayType_Max> mRenderDisplayJob; // sead::UnsafeArray<sead::PtrArray<agl::lyr::RenderDisplay::Job>, cDisplayType_Max>
77 u32 mRenderDLBuffer[0x58 / sizeof(u32)]; // agl::lyr::RenderDLBuffer
84};
85static_assert(sizeof(Renderer) == 0xF78, "agl::lyr::Renderer size mismatch");
86
87template <typename T>
88T* Renderer::createLayer(s32 layer_index, const sead::SafeString& name, DisplayType display_type, sead::Heap* heap)
89{
90 T* p_layer = new (heap, 4) T();
91 initLayer_(p_layer, layer_index, name, display_type, heap);
92 return p_layer;
93}
94
95} }
Definition aglRenderBuffer.h:15
Definition aglDrawMethod.h:12
Definition aglLayer.h:22
Definition aglRenderer.h:28
void removeDrawMethod(const DrawMethod *p_draw_method)
Definition aglRenderer.cpp:9
RenderBuffer * getRenderBuffer(s32 index) const
Definition aglRenderer.h:42
s32 _eec
Definition aglRenderer.h:72
u32 _f00
Definition aglRenderer.h:76
u32 mGpuCounterPeriod
Definition aglRenderer.h:79
s32 mDepthBufferSwizzle
Definition aglRenderer.h:82
bool draw(DisplayType display_type) const
sead::UnsafeArray< u32[0x6C4/sizeof(u32)], cDisplayType_Max > mRenderDisplay
Definition aglRenderer.h:61
u32 _f64
Definition aglRenderer.h:80
s32 getLayerNum() const
Definition aglRenderer.h:44
s32 mColorBufferSwizzle
Definition aglRenderer.h:81
f32 _db4
Definition aglRenderer.h:65
sead::Buffer< Layer * > mLayer
Definition aglRenderer.h:63
sead::UnsafeArray< u32[0x64/sizeof(u32)], 2 > mJobQueue
Definition aglRenderer.h:68
void initLayer_(Layer *p_layer, s32 layer_index, const sead::SafeString &name, DisplayType display_type, sead::Heap *heap)
u8 _db8[16]
Definition aglRenderer.h:66
u32 mGpuCounter
Definition aglRenderer.h:78
MultiSampleType mMultiSampleType
Definition aglRenderer.h:60
u32 _10
Definition aglRenderer.h:59
sead::CriticalSection mCriticalSection
Definition aglRenderer.h:67
sead::BitFlag16 mFlag
Definition aglRenderer.h:64
sead::UnsafeArray< sead::PtrArrayImpl, cDisplayType_Max > mRenderDisplayJob
Definition aglRenderer.h:69
f32 _ef4
Definition aglRenderer.h:74
bool isDisplayList_() const
u32 _ee8
Definition aglRenderer.h:71
T * getLayer(s32 index) const
Definition aglRenderer.h:48
T * createLayer(s32 layer_index, const sead::SafeString &name, DisplayType display_type, sead::Heap *heap)
Definition aglRenderer.h:88
sead::Controller * mpDebugController
Definition aglRenderer.h:73
u32 _ee4
Definition aglRenderer.h:70
u32 mRenderDLBuffer[0x58/sizeof(u32)]
Definition aglRenderer.h:77
Layer *const & getLayer(s32 index) const
Definition aglRenderer.h:45
f32 _f70
Definition aglRenderer.h:83
sead::Vector2f _ef8
Definition aglRenderer.h:75
sead::UnsafeArray< RenderBuffer *, cDisplayType_Max > mRenderBuffer
Definition aglRenderer.h:62
Definition seadBuffer.h:13
Definition seadController.h:28
Definition seadCriticalSection.h:13
Definition seadHeap.h:23
Definition seadPtrArray.h:13
Definition seadSafeArray.h:257
Definition aglDrawMethod.cpp:4
DisplayType
Definition aglLayerEnum.h:8
@ cDisplayType_Max
Definition aglLayerEnum.h:11
Definition aglDisplayList.cpp:5
MultiSampleType
Definition aglTextureEnum.h:139
Definition seadAssert.h:44
Vector2< f32 > Vector2f
Definition seadVector.h:238
BitFlag< u16 > BitFlag16
Definition seadBitFlag.h:124
SafeStringBase< char > SafeString
Definition seadSafeString.h:409
#define SEAD_SINGLETON_DISPOSER(CLASS)
Definition seadDisposer.h:29