sead
Loading...
Searching...
No Matches
aglVertexBuffer.h
Go to the documentation of this file.
1#pragma once
2
3#include <common/aglVertexEnum.h>
4#include <container/seadSafeArray.h>
5
6#include <cafe/gx2.h>
7
8namespace agl {
9
11{
31 static_assert(sizeof(Stream_) == 0x1C);
32
33public:
34 static const u32 cVertexStreamMax = 16;
35
36public:
38 virtual ~VertexBuffer();
39
40 VertexStreamFormat getStreamFormat(s32 index) const { return mStream[index].mFormat; }
41 u32 getStreamOffset(s32 index) const { return mStream[index].mOffset; }
42
43 bool isEnable(s32 index) const { return mStream[index].mEnable; }
44
45 GX2CompSel getStreamCompSel(s32 index) const { return mStream[index].mCompSel; }
46 u32 getStreamDivisor(s32 index) const { return mStream[index].mDivisor; }
47 GX2EndianSwapMode getStreamEndianSwap(s32 index) const { return mStream[index].mEndianSwap; }
48 GX2AttribIndexType getStreamIndexType(s32 index) const { return mStream[index].mIndexType; }
49
50 const void* getBufferPtr() const { return mpBuffer; }
51 u32 getStride() const { return mStride; }
52 u32 getVertexNum() const { return mVertexNum; }
53 u32 getBufferByteSize() const { return mBufferByteSize; }
54
55 void setUpBuffer(const void* buffer, u32 stride, u32 buffer_byte_size);
56 void setUpStream(s32 index, VertexStreamFormat format, u32 offset);
57
59 {
60 flushCPUCacheNoSync(0, mBufferByteSize);
61 }
62
63 void flushCPUCacheNoSync(u32 offset, u32 size) const;
64
65private:
66 void cleanUp_();
67
68private:
69 sead::SafeArray<Stream_, cVertexStreamMax> mStream;
70 const void* mpBuffer;
74};
75static_assert(sizeof(VertexBuffer) == 0x1D4, "agl::VertexBuffer size mismatch");
76
77}
Definition aglVertexBuffer.h:11
u32 mVertexNum
Definition aglVertexBuffer.h:72
u32 mStride
Definition aglVertexBuffer.h:71
GX2CompSel getStreamCompSel(s32 index) const
Definition aglVertexBuffer.h:45
const void * getBufferPtr() const
Definition aglVertexBuffer.h:50
void flushCPUCacheNoSync(u32 offset, u32 size) const
Definition aglVertexBuffer.cpp:81
void setUpBuffer(const void *buffer, u32 stride, u32 buffer_byte_size)
Definition aglVertexBuffer.cpp:30
u32 getVertexNum() const
Definition aglVertexBuffer.h:52
sead::SafeArray< Stream_, cVertexStreamMax > mStream
Definition aglVertexBuffer.h:69
void setUpStream(s32 index, VertexStreamFormat format, u32 offset)
Definition aglVertexBuffer.cpp:56
GX2AttribIndexType getStreamIndexType(s32 index) const
Definition aglVertexBuffer.h:48
VertexBuffer()
Definition aglVertexBuffer.cpp:6
u32 getStride() const
Definition aglVertexBuffer.h:51
static const u32 cVertexStreamMax
Definition aglVertexBuffer.h:34
u32 getStreamOffset(s32 index) const
Definition aglVertexBuffer.h:41
const void * mpBuffer
Definition aglVertexBuffer.h:70
void flushCPUCacheNoSync() const
Definition aglVertexBuffer.h:58
GX2EndianSwapMode getStreamEndianSwap(s32 index) const
Definition aglVertexBuffer.h:47
virtual ~VertexBuffer()
Definition aglVertexBuffer.cpp:14
void cleanUp_()
Definition aglVertexBuffer.cpp:19
u32 getStreamDivisor(s32 index) const
Definition aglVertexBuffer.h:46
bool isEnable(s32 index) const
Definition aglVertexBuffer.h:43
VertexStreamFormat getStreamFormat(s32 index) const
Definition aglVertexBuffer.h:40
u32 getBufferByteSize() const
Definition aglVertexBuffer.h:53
u32 mBufferByteSize
Definition aglVertexBuffer.h:73
Definition seadSafeArray.h:19
Definition aglDisplayList.cpp:5
VertexStreamFormat
Definition aglVertexEnum.h:10
@ cVertexStreamFormat_8_uNorm
Definition aglVertexEnum.h:11
Definition seadAssert.h:44
Definition aglVertexBuffer.h:13
u32 mDivisor
Definition aglVertexBuffer.h:27
GX2AttribIndexType mIndexType
Definition aglVertexBuffer.h:29
VertexStreamFormat mFormat
Definition aglVertexBuffer.h:21
Stream_()
Definition aglVertexBuffer.h:14
GX2CompSel mCompSel
Definition aglVertexBuffer.h:26
u32 mOffset
Definition aglVertexBuffer.h:22
bool mEnable
Definition aglVertexBuffer.h:24
GX2EndianSwapMode mEndianSwap
Definition aglVertexBuffer.h:28