aboutsummaryrefslogtreecommitdiff
path: root/src/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer')
-rw-r--r--src/renderer/RSoftwareBackend.cpp16
-rw-r--r--src/renderer/RSoftwareBackend.hpp2
-rw-r--r--src/renderer/Renderer.cpp18
-rw-r--r--src/renderer/Renderer.hpp14
4 files changed, 27 insertions, 23 deletions
diff --git a/src/renderer/RSoftwareBackend.cpp b/src/renderer/RSoftwareBackend.cpp
index f4f31f3..927fc92 100644
--- a/src/renderer/RSoftwareBackend.cpp
+++ b/src/renderer/RSoftwareBackend.cpp
@@ -1,3 +1,4 @@
+#include "common/MemoryManager.hpp"
#include "renderer/Renderer.hpp"
#include <renderer/RSoftwareBackend.hpp>
@@ -39,8 +40,8 @@ RSoftwareBackend::Draw()
SortRenderEntities();
- for (RZBuffEntry& entry : m_renderer.m_z_buff) {
- REntity& entity = m_renderer.m_render_entities[entry.entity_index];
+ for (auto& sort_entry : m_renderer.m_sort_entries) {
+ REntity& entity = m_renderer.m_render_entities[sort_entry.entity_index];
switch (entity.type) {
case REntityType_Rectangle: {
DrawRectangle(entity.rect);
@@ -51,7 +52,7 @@ RSoftwareBackend::Draw()
} break;
case REntityType_Text: {
- DrawText(entity.text);
+ DrawFrameString32(entity.string32);
}; break;
case REntityType_Circle: {
@@ -93,9 +94,9 @@ RSoftwareBackend::Resize(int32_t w, int32_t h)
void
RSoftwareBackend::SortRenderEntities()
{
- auto& z_buff = m_renderer.m_z_buff;
+ auto& z_buff = m_renderer.m_sort_entries;
std::sort(z_buff.begin(), z_buff.end(),
- [](const RZBuffEntry& e1, const RZBuffEntry& e2) {
+ [](const RSortEntry& e1, const RSortEntry& e2) {
return e1.z < e2.z;
});
}
@@ -218,11 +219,12 @@ RSoftwareBackend::DrawAlphaBitmap(REntity_AlphaBitmap& entity)
}
void
-RSoftwareBackend::DrawText(REntity_Text& entity)
+RSoftwareBackend::DrawFrameString32(REntity_String32& entity)
{
int32_t xscreen = m_renderer.WorldXToScreenX(entity.pos.x);
int32_t yscreen = m_renderer.WorldYToScreenY(entity.pos.y);
- for (char32_t ch : entity.text) {
+ std::u32string& str = MemoryManager::GetString32(entity.id);
+ for (char32_t ch : str) {
Glyph& glyph = entity.font.GetGlyph(ch);
int32_t x = xscreen + glyph.xoff;
diff --git a/src/renderer/RSoftwareBackend.hpp b/src/renderer/RSoftwareBackend.hpp
index 482bb52..2563558 100644
--- a/src/renderer/RSoftwareBackend.hpp
+++ b/src/renderer/RSoftwareBackend.hpp
@@ -30,7 +30,7 @@ private:
void DrawClear();
void DrawRectangle(REntity_Rectangle& entity);
void DrawAlphaBitmap(REntity_AlphaBitmap& entity);
- void DrawText(REntity_Text& entity);
+ void DrawFrameString32(REntity_String32& entity);
void DrawTextGlyph(Glyph& glyph, Color color, int32_t xscreen, int32_t yscreen);
diff --git a/src/renderer/Renderer.cpp b/src/renderer/Renderer.cpp
index 87e2ff7..17694b0 100644
--- a/src/renderer/Renderer.cpp
+++ b/src/renderer/Renderer.cpp
@@ -15,7 +15,7 @@ Renderer::Init(SDL_Window* window)
{
m_window = window;
m_render_entities.reserve(1024);
- m_z_buff.reserve(1024);
+ m_sort_entries.reserve(1024);
m_backend = std::make_unique<RSoftwareBackend>(*this);
}
@@ -23,7 +23,7 @@ void
Renderer::Reset()
{
m_render_entities.clear();
- m_z_buff.clear();
+ m_sort_entries.clear();
SetCameraSize(0.0f, 0.0f);
}
@@ -76,7 +76,7 @@ Renderer::PushAlphaBitmap(AlphaBitmap& bitmap, V2F32 pos, Color color, uint32_t
pos,
color
}});
- m_z_buff.emplace_back(z, m_render_entities.size()-1);
+ m_sort_entries.emplace_back(z, m_render_entities.size()-1);
}
void
@@ -87,7 +87,7 @@ Renderer::PushRectangle(Rectangle rect, Color color, uint32_t z)
rect,
color
}});
- m_z_buff.emplace_back(z, m_render_entities.size()-1);
+ m_sort_entries.emplace_back(z, m_render_entities.size()-1);
}
void
@@ -98,20 +98,20 @@ Renderer::PushCircle(Circle circle, Color color, uint32_t z)
circle,
color
}});
- m_z_buff.emplace_back(z, m_render_entities.size()-1);
+ m_sort_entries.emplace_back(z, m_render_entities.size()-1);
}
void
-Renderer::PushText(std::u32string& text, Font& font, V2F32 pos, Color color, uint32_t z)
+Renderer::PushString32(String32Id id, Font& font, V2F32 pos, Color color, uint32_t z)
{
- m_render_entities.emplace_back(REntity{.text{
+ m_render_entities.emplace_back(REntity{.string32{
REntityType_Text,
- text,
+ id,
font,
pos,
color
}});
- m_z_buff.emplace_back(z, m_render_entities.size()-1);
+ m_sort_entries.emplace_back(z, m_render_entities.size()-1);
}
diff --git a/src/renderer/Renderer.hpp b/src/renderer/Renderer.hpp
index da57e29..8981826 100644
--- a/src/renderer/Renderer.hpp
+++ b/src/renderer/Renderer.hpp
@@ -1,8 +1,10 @@
#pragma once
+#include <games/Game.hpp>
#include <common/math.hpp>
#include <common/Font.hpp>
#include <common/shapes.hpp>
+#include <common/MemoryManager.hpp>
#include <SDL3/SDL.h>
#include <SDL3/SDL_video.h>
@@ -45,9 +47,9 @@ struct REntity_Circle {
Color color;
};
-struct REntity_Text {
+struct REntity_String32 {
REntityType type;
- std::u32string& text;
+ String32Id id;
Font& font;
V2F32 pos;
Color color;
@@ -59,10 +61,10 @@ union REntity {
REntity_AlphaBitmap bitmap;
REntity_Rectangle rect;
REntity_Circle circle;
- REntity_Text text;
+ REntity_String32 string32;
};
-struct RZBuffEntry {
+struct RSortEntry {
uint32_t z;
uint32_t entity_index;
};
@@ -85,7 +87,7 @@ public:
void PushAlphaBitmap(AlphaBitmap& bitmap, V2F32 pos, Color color, uint32_t z);
void PushRectangle(Rectangle rect, Color color, uint32_t z);
void PushCircle(Circle circle, Color color, uint32_t z);
- void PushText(std::u32string& text, Font& font, V2F32 pos, Color color, uint32_t z);
+ void PushString32(String32Id id, Font& font, V2F32 pos, Color color, uint32_t z);
/* helper functions */
@@ -108,7 +110,7 @@ public:
Color m_clear_color {};
std::vector<REntity> m_render_entities;
- std::vector<RZBuffEntry> m_z_buff;
+ std::vector<RSortEntry> m_sort_entries;
std::unique_ptr<RSoftwareBackend> m_backend;
friend class RSoftwareBackend;