LunarRenderNative

    Windows native GLFW and OpenGL backend for LunarRender.

    Download zip
    Version
    0.1.0
    License
    MIT
    Last updated
    12 hours ago
    Downloads
    3

    #LunarRenderNative

    PingGuoMiaoMiao/LunarRenderNative 是 LunarRender 的 Windows native 图形模块。它把核心模块生成的渲染数据交给 GLFW、GLAD 和 OpenGL 3.3 Core,提供可运行的示例和 CMake 构建入口。

    #安装环境

    1. 安装 MoonBit,并确保 moon 在 PowerShell 的 PATH 中。
    2. 安装 Visual Studio 2022,勾选 Desktop development with C++ 和 Windows SDK。
    3. 安装 CMake 3.20 或更高版本,并确保 cmake 在 PATH 中。
    4. 安装支持 OpenGL 3.3 Core 的显卡驱动。

    #本地联调

    从 native 目录执行以下命令,创建不提交的临时 workspace:

    @' members = [ ".", "..", ] '@ | Set-Content -Encoding utf8 moon.work

    然后构建依赖:

    cmake -S . -B third_party/build -G "Visual Studio 17 2022" -A x64 -DBUILD_SHARED_LIBS=OFF cmake --build third_party/build --config Release moon fmt --check moon check --target native moon test --target native

    #示例

    moon build --target native --release examples/triangle moon build --target native --release examples/textured_cube moon build --target native --release examples/multi_mesh

    三个示例分别验证窗口与最小着色器、纹理材质与旋转立方体、多网格上传与销毁。自动验证使用:

    & .\_build\native\release\build\PingGuoMiaoMiao\LunarRenderNative\examples\triangle\triangle.exe --self-test & .\_build\native\release\build\PingGuoMiaoMiao\LunarRenderNative\examples\textured_cube\textured_cube.exe --self-test & .\_build\native\release\build\PingGuoMiaoMiao\LunarRenderNative\examples\multi_mesh\multi_mesh.exe --self-test

    日志应包含窗口创建、OpenGL 版本、网格或纹理上传、backend 销毁和窗口销毁,进程退出码应为 0。

    #发布

    核心模块必须先以 PingGuoMiaoMiao/LunarRender@0.2.0 发布,再在本模块执行:

    moon publish --dry-run moon publish

    由于根模块的 .moonignore 必须排除 nested native 目录,仓库提供可恢复的发布脚本:在仓库根目录执行 ./scripts/publish-native.ps1 -DryRun 或去掉 -DryRun。脚本只在发布期间临时移动根 .moonignore,完成后自动恢复。

    本模块版本为 PingGuoMiaoMiao/LunarRenderNative@0.1.0。发布前不要把临时 moon.work、_build、私有模型或生成文件加入 Git。

    #限制

    当前模块只支持 Windows native、MSVC 和 OpenGL 3.3 Core。它不实现 Minecraft 世界、玩家物理、HUD、物品栏、命令或联网;也不要求私有 MMD 资源才能构建基础示例。