diff options
Diffstat (limited to 'src/renderer/RSoftwareBackend.cpp')
| -rw-r--r-- | src/renderer/RSoftwareBackend.cpp | 16 |
1 files changed, 9 insertions, 7 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; |
