From f8ecf7e03ae21ddf195cbf91f9e32bd0697e76ce Mon Sep 17 00:00:00 2001 From: ChestnutYueyue <952134128@qq.com> Date: Sun, 15 Feb 2026 11:22:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=B8=B2=E6=9F=93):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=86=85=E7=BD=AE=E7=9D=80=E8=89=B2=E5=99=A8=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=92=8C=E5=AE=89=E8=A3=85=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除font.shader中u_smoothing的默认值 - 添加xmake.lua中的着色器安装函数,支持不同平台 - 在渲染模块初始化时初始化ShaderManager并加载内置着色器 - 在渲染模块关闭时清理ShaderManager资源 --- Extra2D/shaders/builtin/font.shader | 2 +- Extra2D/src/graphics/render_module.cpp | 13 +++++++++++ xmake.lua | 30 +++++++++++++++++++++++++- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/Extra2D/shaders/builtin/font.shader b/Extra2D/shaders/builtin/font.shader index 52e343b..c1bc8ec 100644 --- a/Extra2D/shaders/builtin/font.shader +++ b/Extra2D/shaders/builtin/font.shader @@ -41,7 +41,7 @@ in vec2 v_texCoord; in vec4 v_color; uniform sampler2D u_texture; -uniform float u_smoothing = 0.1; +uniform float u_smoothing; out vec4 fragColor; diff --git a/Extra2D/src/graphics/render_module.cpp b/Extra2D/src/graphics/render_module.cpp index c1ab7c0..7fa96bb 100644 --- a/Extra2D/src/graphics/render_module.cpp +++ b/Extra2D/src/graphics/render_module.cpp @@ -1,5 +1,7 @@ #include #include +#include +#include #include #include #include @@ -145,6 +147,15 @@ bool RenderModuleInitializer::initialize(const IModuleConfig* config) { E2D_LOG_ERROR("Render module requires window to be set"); return false; } + + auto shaderFactory = std::make_shared(); + if (!ShaderManager::getInstance().init(shaderFactory, "extra2d")) { + E2D_LOG_WARN("Failed to initialize ShaderManager with default paths"); + } + + if (!ShaderManager::getInstance().loadBuiltinShaders()) { + E2D_LOG_WARN("Failed to load some builtin shaders"); + } renderer_ = RenderBackend::create(renderConfig->backend); if (!renderer_) { @@ -171,6 +182,8 @@ void RenderModuleInitializer::shutdown() { renderer_.reset(); } + ShaderManager::getInstance().shutdown(); + initialized_ = false; E2D_LOG_INFO("Render module shutdown"); } diff --git a/xmake.lua b/xmake.lua index da4ad34..f418400 100644 --- a/xmake.lua +++ b/xmake.lua @@ -95,6 +95,32 @@ includes("xmake/engine.lua") -- 定义引擎库 define_extra2d_engine() +-- ============================================== +-- Shader文件安装函数 +-- ============================================== + +function install_shaders(target) + local plat = get_config("plat") or os.host() + local targetdir = target:targetdir() + + local shader_src = "Extra2D/shaders" + + if plat == "switch" then + local romfs_dir = path.join(targetdir, "romfs") + local shader_dest = path.join(romfs_dir, "shaders") + + os.rm(shader_dest) + os.cp(shader_src, shader_dest) + print("Shaders installed to romfs: " .. shader_dest) + else + local shader_dest = path.join(targetdir, "shaders") + + os.rm(shader_dest) + os.cp(shader_src, shader_dest) + print("Shaders installed to: " .. shader_dest) + end +end + -- ============================================== -- 示例程序 -- ============================================== @@ -113,5 +139,7 @@ target("demo_basic") add_packages("glm", "nlohmann_json", "libsdl2") add_syslinks("opengl32", "glu32", "winmm", "imm32", "version", "setupapi") end + + -- 构建后安装Shader文件 + after_build(install_shaders) target_end() -