mirror of
https://github.com/zhenyan121/Cubed.git
synced 2026-08-09 02:07:04 +08:00
09653c318aaf58d21a35526c962c0d504201d1a5
Replace the old `Text` class with a new component-based UI system consisting of `Widget` and `Label` classes. Key changes: - Remove `Text` class and its GPU upload logic; introduce `Label` as a `Widget` subclass with dirty-flag vertex update. - Add `UIVertexData` struct to manage per-label vertex buffer/array and memory. - Refactor `DebugCollector` to store labels in a `Widget` tree, removing hash-based lookup. - Simplify `Font::vertices()` signature by removing position/scale parameters; scaling is now applied in the renderer’s model matrix. - Update `Renderer` with `render_label()` and move UI rendering to a `render_ui()` that renders the widget tree. - Add new source files `label.cpp`, `widget.cpp`, `ui_vertex_data.cpp` and update CMakeLists.
What's it
A cube game like Minecraft, using C++ and OpenGL.
Build Guide
Prerequisites
- CMake (>= 3.24)
- C++ 23 compatible compiler
Step
- Clone the repository
git clone https://github.com/zhenyan121/Cubed.git && cd Cubed - Configure with CMake
mkdir build && cd build cmake -G "Ninja" .. - Build the project
ninja
Languages
C++
96.8%
C
2.1%
GLSL
0.6%
Python
0.3%
CMake
0.2%