summaryrefslogtreecommitdiff
path: root/src/render/RenderBuffer.cpp
diff options
context:
space:
mode:
authorclaude-bot <[email protected]>2026-07-13 12:27:07 +0000
committerclaude-bot <[email protected]>2026-07-13 12:27:07 +0000
commit9f61c9e6ac6b1ac5692cf6352d2ebbd47a31a686 (patch)
treea84756b82513739a2672db3a1f0ec579db6d18ff /src/render/RenderBuffer.cpp
downloadre3-miami.tar.gz
re3-miami.zip
Import Cai1Hsu/re3 @ miami (reVC / GTA:VC decompilation)HEADmiami
Snapshot import (no upstream history) into git.ancap.in.ua/claude, per @lzcnt. Source: https://github.com/Cai1Hsu/re3 branch miami.
Diffstat (limited to 'src/render/RenderBuffer.cpp')
-rw-r--r--src/render/RenderBuffer.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/render/RenderBuffer.cpp b/src/render/RenderBuffer.cpp
new file mode 100644
index 0000000..687cc76
--- /dev/null
+++ b/src/render/RenderBuffer.cpp
@@ -0,0 +1,52 @@
+#include "common.h"
+
+#include "RenderBuffer.h"
+
+int32 TempBufferVerticesStored;
+int32 TempBufferIndicesStored;
+
+VertexBufferUnion TempVertexBuffer;
+RwImVertexIndex TempBufferRenderIndexList[TEMPBUFFERINDEXSIZE];
+
+int RenderBuffer::VerticesToBeStored;
+int RenderBuffer::IndicesToBeStored;
+
+void
+RenderBuffer::ClearRenderBuffer(void)
+{
+ TempBufferVerticesStored = 0;
+ TempBufferIndicesStored = 0;
+}
+
+void
+RenderBuffer::StartStoring(int numIndices, int numVertices, RwImVertexIndex **indexStart, RwIm3DVertex **vertexStart)
+{
+ if(TempBufferIndicesStored + numIndices >= TEMPBUFFERINDEXSIZE)
+ RenderStuffInBuffer();
+ if(TempBufferVerticesStored + numVertices >= TEMPBUFFERVERTSIZE)
+ RenderStuffInBuffer();
+ *indexStart = &TempBufferRenderIndexList[TempBufferIndicesStored];
+ *vertexStart = &TempBufferRenderVertices[TempBufferVerticesStored];
+ IndicesToBeStored = numIndices;
+ VerticesToBeStored = numVertices;
+}
+
+void
+RenderBuffer::StopStoring(void)
+{
+ int i;
+ for(i = TempBufferIndicesStored; i < TempBufferIndicesStored+IndicesToBeStored; i++)
+ TempBufferRenderIndexList[i] += TempBufferVerticesStored;
+ TempBufferIndicesStored += IndicesToBeStored;
+ TempBufferVerticesStored += VerticesToBeStored;
+}
+
+void
+RenderBuffer::RenderStuffInBuffer(void)
+{
+ if(TempBufferVerticesStored && RwIm3DTransform(TempBufferRenderVertices, TempBufferVerticesStored, nil, rwIM3D_VERTEXUV)){
+ RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, TempBufferRenderIndexList, TempBufferIndicesStored);
+ RwIm3DEnd();
+ }
+ ClearRenderBuffer();
+}