From de1e8ed5630bae4469083e23ea5008a97b305adb Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Wed, 17 Jan 2024 05:30:38 +0100 Subject: [PATCH] i dont know chat i did i was high as f*ck --- example/main.c | 4 ++-- src/core/bridge.cpp | 6 ++--- src/platform/inputs.cpp | 3 +-- src/platform/inputs.h | 7 +++--- src/platform/window.cpp | 3 +-- src/renderer/pipeline/pipeline.cpp | 6 ++--- src/renderer/renderer.cpp | 28 ++++++++++++---------- src/renderer/renderer.h | 5 +++- src/renderer/renderpass/vk_render_pass.cpp | 4 ++-- src/renderer/texts/font.cpp | 6 ++--- src/renderer/texts/font.h | 21 +++------------- src/renderer/texts/text_library.cpp | 3 +-- src/renderer/texts/text_library.h | 3 +-- src/renderer/texts/text_manager.cpp | 22 ++++++++++------- src/renderer/texts/text_manager.h | 5 ++-- 15 files changed, 59 insertions(+), 67 deletions(-) diff --git a/example/main.c b/example/main.c index b579ecf..31191c6 100755 --- a/example/main.c +++ b/example/main.c @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/04 17:55:21 by maldavid #+# #+# */ -/* Updated: 2024/01/16 06:41:48 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 08:03:37 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -152,7 +152,7 @@ int main(void) mlx_loop(mlx.mlx); mlx_get_screens_size(mlx.mlx, &w, &h); - printf("screen size : %dx%d", w, h); + printf("screen size : %dx%d\n", w, h); mlx_destroy_image(mlx.mlx, mlx.logo_png); mlx_destroy_image(mlx.mlx, mlx.logo_jpg); diff --git a/src/core/bridge.cpp b/src/core/bridge.cpp index e847b15..e6d5ca0 100755 --- a/src/core/bridge.cpp +++ b/src/core/bridge.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/04 17:35:20 by maldavid #+# #+# */ -/* Updated: 2024/01/10 19:54:51 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 08:20:17 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -220,7 +220,7 @@ extern "C" if (filepath == nullptr) { mlx::core::error::report(e_kind::error, "Font loader : filepath is NULL"); - return ; + return; } std::filesystem::path file(filepath); if(std::strcmp(filepath, "default") != 0 && file.extension() != ".ttf" && file.extension() != ".tte") @@ -237,7 +237,7 @@ extern "C" if (filepath == nullptr) { mlx::core::error::report(e_kind::error, "Font loader : filepath is NULL"); - return ; + return; } std::filesystem::path file(filepath); if(std::strcmp(filepath, "default") != 0 && file.extension() != ".ttf" && file.extension() != ".tte") diff --git a/src/platform/inputs.cpp b/src/platform/inputs.cpp index a6de3a7..738fa1b 100755 --- a/src/platform/inputs.cpp +++ b/src/platform/inputs.cpp @@ -6,13 +6,12 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/05 16:30:19 by maldavid #+# #+# */ -/* Updated: 2024/01/11 19:08:23 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 07:59:15 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #include "inputs.h" #include -#include #include namespace mlx diff --git a/src/platform/inputs.h b/src/platform/inputs.h index fb663fc..e550009 100755 --- a/src/platform/inputs.h +++ b/src/platform/inputs.h @@ -6,15 +6,14 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/05 16:27:35 by maldavid #+# #+# */ -/* Updated: 2023/12/11 19:47:20 by vavaas ### ########.fr */ +/* Updated: 2024/01/16 07:59:08 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #include #include -#include #include -#include +#include #include #include @@ -26,7 +25,7 @@ namespace mlx { struct Hook { - std::function hook; + func::function hook; void* param = nullptr; }; diff --git a/src/platform/window.cpp b/src/platform/window.cpp index aee77aa..44827ac 100755 --- a/src/platform/window.cpp +++ b/src/platform/window.cpp @@ -6,14 +6,13 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/04 17:36:44 by maldavid #+# #+# */ -/* Updated: 2023/12/27 16:57:28 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 07:59:21 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #include #include #include -#include namespace mlx { diff --git a/src/renderer/pipeline/pipeline.cpp b/src/renderer/pipeline/pipeline.cpp index b8ca2b6..06ebfd3 100755 --- a/src/renderer/pipeline/pipeline.cpp +++ b/src/renderer/pipeline/pipeline.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 21:27:38 by maldavid #+# #+# */ -/* Updated: 2024/01/10 21:53:38 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 07:45:15 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,7 +49,7 @@ namespace mlx gl_Position = uProj.mat * vec4(pos.x, pos.y, 0.0, 1.0); } */ - const std::vector vertex_shader = { + const std::vector vertex_shader = { // precompiled vertex shader 0x07230203,0x00010000,0x0008000b,0x0000003b,0x00000000,0x00020011,0x00000001,0x0006000b, 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, 0x000a000f,0x00000000,0x00000004,0x6e69616d,0x00000000,0x0000000b,0x0000000f,0x00000015, @@ -124,7 +124,7 @@ namespace mlx fColor = process_color; } */ - const std::vector fragment_shader = { + const std::vector fragment_shader = { // pre compiled fragment shader 0x07230203,0x00010000,0x0008000b,0x0000002c,0x00000000,0x00020011,0x00000001,0x0006000b, 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, 0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000002a,0x00030010, diff --git a/src/renderer/renderer.cpp b/src/renderer/renderer.cpp index 5666e72..2e3b1c1 100755 --- a/src/renderer/renderer.cpp +++ b/src/renderer/renderer.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 17:25:16 by maldavid #+# #+# */ -/* Updated: 2024/01/16 07:14:19 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 08:02:57 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -82,12 +82,7 @@ namespace mlx if(result == VK_ERROR_OUT_OF_DATE_KHR) { - _swapchain.recreate(); - _pass.destroy(); - _pass.init(_swapchain.getImagesFormat(), VK_IMAGE_LAYOUT_PRESENT_SRC_KHR); - _framebuffers.clear(); - for(std::size_t i = 0; i < _swapchain.getImagesNumber(); i++) - _framebuffers.emplace_back().init(_pass, _swapchain.getImage(i)); + recreateRenderData(); return false; } else if(result != VK_SUCCESS && result != VK_SUBOPTIMAL_KHR) @@ -150,12 +145,7 @@ namespace mlx if(result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_SUBOPTIMAL_KHR || _framebufferResized) { _framebufferResized = false; - _swapchain.recreate(); - _pass.destroy(); - _pass.init(_swapchain.getImagesFormat(), VK_IMAGE_LAYOUT_PRESENT_SRC_KHR); - _framebuffers.clear(); - for(std::size_t i = 0; i < _swapchain.getImagesNumber(); i++) - _framebuffers.emplace_back().init(_pass, _swapchain.getImage(i)); + recreateRenderData(); } else if(result != VK_SUCCESS) core::error::report(e_kind::fatal_error, "Vulkan error : failed to present swap chain image"); @@ -168,6 +158,18 @@ namespace mlx } } + void Renderer::recreateRenderData() + { + _swapchain.recreate(); + _pass.destroy(); + _pass.init(_swapchain.getImagesFormat(), VK_IMAGE_LAYOUT_PRESENT_SRC_KHR); + for(auto& fb : _framebuffers) + fb.destroy(); + _framebuffers.clear(); + for(std::size_t i = 0; i < _swapchain.getImagesNumber(); i++) + _framebuffers.emplace_back().init(_pass, _swapchain.getImage(i)); + } + void Renderer::destroy() { MLX_PROFILE_FUNCTION(); diff --git a/src/renderer/renderer.h b/src/renderer/renderer.h index 7b4dd5f..1d4869b 100755 --- a/src/renderer/renderer.h +++ b/src/renderer/renderer.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 17:14:45 by maldavid #+# #+# */ -/* Updated: 2023/12/22 21:59:15 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/16 08:01:25 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -113,6 +113,9 @@ namespace mlx ~Renderer() = default; + private: + void recreateRenderData(); + private: GraphicPipeline _pipeline; CmdManager _cmd; diff --git a/src/renderer/renderpass/vk_render_pass.cpp b/src/renderer/renderpass/vk_render_pass.cpp index 06b5e75..a4a08a1 100755 --- a/src/renderer/renderpass/vk_render_pass.cpp +++ b/src/renderer/renderpass/vk_render_pass.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:21:36 by maldavid #+# #+# */ -/* Updated: 2024/01/10 21:53:03 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 08:22:39 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ namespace mlx { - static const VkClearValue clearColor = {{{ 0.0f, 0.0f, 0.0f, 1.0f }}}; // wtf, this mess to satisfy a warning + static const VkClearValue clearColor = {{{ 0.f, 0.f, 0.f, 1.0f }}}; // wtf, this mess to satisfy a warning void RenderPass::init(VkFormat attachement_format, VkImageLayout layout) { diff --git a/src/renderer/texts/font.cpp b/src/renderer/texts/font.cpp index c508c99..35916a9 100755 --- a/src/renderer/texts/font.cpp +++ b/src/renderer/texts/font.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/12/11 22:06:09 by kbz_8 #+# #+# */ -/* Updated: 2024/01/11 01:23:20 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 09:11:26 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ constexpr const int RANGE = 1024; namespace mlx { - Font::Font(Renderer& renderer, const std::filesystem::path& path, float scale) : non_copyable(), _name(path.string()), _scale(scale) + Font::Font(Renderer& renderer, const std::filesystem::path& path, float scale) : _name(path.string()), _scale(scale) { MLX_PROFILE_FUNCTION(); std::vector tmp_bitmap(RANGE * RANGE); @@ -56,7 +56,7 @@ namespace mlx _atlas.setDescriptor(renderer.getFragDescriptorSet().duplicate()); } - Font::Font(class Renderer& renderer, const std::string& name, const std::vector& ttf_data, float scale) : non_copyable(), _name(name), _scale(scale) + Font::Font(class Renderer& renderer, const std::string& name, const std::vector& ttf_data, float scale) : _name(name), _scale(scale) { MLX_PROFILE_FUNCTION(); std::vector tmp_bitmap(RANGE * RANGE); diff --git a/src/renderer/texts/font.h b/src/renderer/texts/font.h index 1b0ed40..02780fa 100755 --- a/src/renderer/texts/font.h +++ b/src/renderer/texts/font.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/12/11 21:17:04 by kbz_8 #+# #+# */ -/* Updated: 2024/01/11 20:08:55 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 09:14:53 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,13 +15,12 @@ #include #include -#include #include #include namespace mlx { - class Font : public non_copyable + class Font { public: Font() = delete; @@ -32,7 +31,7 @@ namespace mlx inline const std::array& getCharData() const { return _cdata; } inline const TextureAtlas& getAtlas() const noexcept { return _atlas; } inline bool operator==(const Font& rhs) const { return rhs._name == _name && rhs._scale == _scale; } - inline bool operator!=(const Font& rhs) const { return rhs._name != _name && rhs._scale != _scale; } + inline bool operator!=(const Font& rhs) const { return rhs._name != _name || rhs._scale != _scale; } ~Font(); private: @@ -43,18 +42,4 @@ namespace mlx }; } -namespace std -{ - template <> - struct hash - { - std::size_t operator()(const mlx::Font& f) const noexcept - { - std::size_t hash = 0; - mlx::hashCombine(hash, f.getName(), f.getScale()); - return hash; - } - }; -} - #endif diff --git a/src/renderer/texts/text_library.cpp b/src/renderer/texts/text_library.cpp index 9dd5658..ab90159 100755 --- a/src/renderer/texts/text_library.cpp +++ b/src/renderer/texts/text_library.cpp @@ -6,11 +6,10 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/10 11:59:57 by maldavid #+# #+# */ -/* Updated: 2024/01/11 05:19:24 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 08:54:22 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ -#include #include #include #include diff --git a/src/renderer/texts/text_library.h b/src/renderer/texts/text_library.h index 19ae1eb..9bdef36 100755 --- a/src/renderer/texts/text_library.h +++ b/src/renderer/texts/text_library.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/10 11:52:30 by maldavid #+# #+# */ -/* Updated: 2024/01/11 05:08:04 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 08:54:15 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ #include #include -#include #include #include #include diff --git a/src/renderer/texts/text_manager.cpp b/src/renderer/texts/text_manager.cpp index d4a9f82..3ea7400 100755 --- a/src/renderer/texts/text_manager.cpp +++ b/src/renderer/texts/text_manager.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/06 16:41:13 by maldavid #+# #+# */ -/* Updated: 2024/01/11 04:54:16 by maldavid ### ########.fr */ +/* Updated: 2024/01/17 03:47:46 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,28 +14,34 @@ #include #include #include -#include #include -#include #include -#include namespace mlx { void TextManager::init(Renderer& renderer) noexcept { MLX_PROFILE_FUNCTION(); - _font_in_use = &const_cast(*_font_set.emplace(renderer, "default", dogica_ttf, 6.0f).first); + loadFont(renderer, "default", 6.f); } void TextManager::loadFont(Renderer& renderer, const std::filesystem::path& filepath, float scale) { MLX_PROFILE_FUNCTION(); - if(filepath.string() == "default") // we're sure it is already loaded - _font_in_use = &const_cast(*_font_set.emplace(renderer, "default", dogica_ttf, scale).first); + for(Font& font : _font_set) + { + if(filepath == font.getName() && scale == font.getScale()) + { + _font_in_use = &font; + return; + } + } + + if(filepath.string() == "default") + _font_in_use = &_font_set.emplace_back(renderer, "default", dogica_ttf, scale); else - _font_in_use = &const_cast(*_font_set.emplace(renderer, filepath, scale).first); + _font_in_use = &_font_set.emplace_back(renderer, filepath, scale); } std::pair TextManager::registerText(int x, int y, uint32_t color, std::string str) diff --git a/src/renderer/texts/text_manager.h b/src/renderer/texts/text_manager.h index d530868..1474232 100755 --- a/src/renderer/texts/text_manager.h +++ b/src/renderer/texts/text_manager.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/06 16:24:11 by maldavid #+# #+# */ -/* Updated: 2024/01/11 18:48:01 by maldavid ### ########.fr */ +/* Updated: 2024/01/16 09:04:05 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -40,7 +41,7 @@ namespace mlx private: std::unordered_set _text_descriptors; - std::unordered_set _font_set; + std::vector _font_set; Font* _font_in_use = nullptr; }; }