From c37c45ad19a714c437cff1a1ba47ea0b77a0969f Mon Sep 17 00:00:00 2001 From: zhenyan121 <3367366583@qq.com> Date: Sat, 28 Mar 2026 12:04:31 +0800 Subject: [PATCH] feat: add font class and render font function --- CMakeLists.txt | 3 + assets/fonts/IBMPlexSans-Regular.ttf | Bin 0 -> 200500 bytes include/Cubed/app.hpp | 11 ++- include/Cubed/renderer.hpp | 4 + include/Cubed/tools/font.hpp | 35 +++++++++ src/app.cpp | 15 ++-- src/renderer.cpp | 25 +++++- src/shaders/text_f_shader.glsl | 12 +++ src/shaders/text_v_shader.glsl | 11 +++ src/tools/font.cpp | 112 +++++++++++++++++++++++++++ 10 files changed, 217 insertions(+), 11 deletions(-) create mode 100644 assets/fonts/IBMPlexSans-Regular.ttf create mode 100644 include/Cubed/tools/font.hpp create mode 100644 src/shaders/text_f_shader.glsl create mode 100644 src/shaders/text_v_shader.glsl create mode 100644 src/tools/font.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index b869ea0..6dffe92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) find_package(OpenGL REQUIRED) +find_package(Freetype REQUIRED) if (UNIX AND NOT APPLE) find_package(PkgConfig REQUIRED) pkg_check_modules(EGL REQUIRED egl) @@ -75,6 +76,7 @@ add_executable(${PROJECT_NAME} src/texture_manager.cpp src/tools/math_tools.cpp src/tools/shader_tools.cpp + src/tools/font.cpp src/tools/log.cpp src/window.cpp ) @@ -102,6 +104,7 @@ target_link_libraries(${PROJECT_NAME} glm::glm OpenGL::GL soil2 + Freetype::Freetype ) if (UNIX AND NOT APPLE) diff --git a/assets/fonts/IBMPlexSans-Regular.ttf b/assets/fonts/IBMPlexSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bd6817d5202895da5ac4fad88de3da71e652881a GIT binary patch literal 200500 zcmcG%31F1P`9D50@8%%)wYiTya%XdHvN_0oY(f%3$N@
skN3;YpF%+0h|BlnfKiz30m9#?@O4S*?Hf0-shUh+kBKbB)z7x$-c3l4;66{jc=Ckw4DqBBaJK?BB
^ioQUBY%L|7IJM
z+u0^|tJ0-(D|d-Bb}hRPlHSQ~U`vz*%3N5Q<@_i72ELi!%5UO7<@fOi(Ptj!zu=GX
zSNS3SGJl0X#6RGFss-%cNDf!~8VijK~rQ&O)
zOnjq^72hh=Vn~S;?<#eQPzuGrL_EJz#PBOb9AAs5>6?ho9_4qj5BS~ecl;jq5x
N8?
z6=seLnK!^&950gx6wBwp^B_869+`g#SjVt>Rkp~j`rl+!2jgv3tl?4C;&7|->eKCg
zC0->{$L|-qA+~QHXLutg`4NA_`}AxT@$I7ip}XggVxnd?+;;>Mv4TB_VO=4EWjYUR1
zf-y#(0%LQP<2`Pz<7@5Zj&-!^R-pedu@Lj>J_wJ@9|T$fnw#khOuSsafabl%yJD9b
zI2UISIjcHJ4*@mfg_cOND6Ha#VIM-%X+|G&xHX)cv3@Pg?)cQ+eQwb?$8Wt>{qyKi
zF?hi)7CRmRc)+9|@U;OxJ$gh2+cpRyVd;}>+lY1vWy+&mkZNRcL+UB$q^dFi!U3j7
z36WzM3Tl@krw15pf`XMINf@9a)U^|ZeMn*jYEMxuf+q&~$Qa~Fcmz(k5y5nXS$*`0
ziVTeyi>3CX@ujKw#siNa?X{z88-x$Z6^iT|r6+
#7}BT9lk-DJ`#rdQUW$sClw3Wo$-dY+^}7RBlG9B{)2~&6?M&_lc~|PA
?<qzj@VqO{a36M7{eBG$ (@Z9sI(oXUXfT2qcSy3+$Sv