POLARISUI / C++ / 0.1.0

禁止商用。所有使用 PolarisUI 的应用必须公开完整源码。许可全文

Windows x64 / C++17 / OpenGL 3.3+ · 不依赖 Java/JNI · 版本与校验值

C++ SDK 原生材质配置与零模糊折射渲染

PolarisUI C++ 0.1.0

独立的 C++17 桌面 UI SDK。界面、输入和字体层使用 C++,复用 PolarisUI 的 C/OpenGL 3.3 玻璃渲染器,不加载 Java、JNI、JAWT 或 JVM。

禁止商用,所有使用 PolarisUI 的应用必须公开完整对应源码,个人和内部使用也不豁免。详见 LICENSE。这属于自定义源码可见许可,不是 OSI 开源许可。第三方运行库保留各自许可。

本版支持 Windows x64;已验证 Windows 11、LLVM-MinGW 和 NVIDIA RTX 2060。Linux、macOS、ARM 和 32 位尚未移植。CMake 提供 MSVC 源码构建路径,但本次没有 MSVC 实机验证。它是首个 C++ 版本,不是 Java 2.4.5 的 68 类控件完整移植。

直接运行

解压发布包后,运行 bin/windows-x64/polaris_showcase.exe。切换「折射展示」「交互控件」「音乐界面」标签,并调节右侧材质面板。polaris_hello.exe 是最小窗口示例。

需要 Windows 10/11 x64 和支持桌面 OpenGL 3.3+ 的 GPU 驱动。示例已静态链接 LLVM C++ 运行库,PE 导入检查仅出现 Windows 系统 DLL;不需要额外下载 Java、GLFW、LWJGL、Qt、字体或 C++ DLL。

从源码构建

在本 SDK 根目录,用已安装的 CMake 和 LLVM-MinGW:

# LLVM-MinGW 的 bin 目录已加入 PATH。
cmake -S . -B build/local -G "MinGW Makefiles" -DCMAKE_C_COMPILER=x86_64-w64-mingw32-clang.exe -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-clang++.exe -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS=-static
cmake --build build/local --parallel
ctest --test-dir build/local --output-on-failure
./build/local/polaris_showcase.exe

不使用 CMake 时,构建脚本从 PATH 查找 LLVM-MinGW:

powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-windows.ps1

也可以通过 -Toolchain 参数传入实际的 LLVM-MinGW bin 目录。编译输出位于 build/llvm-mingw-x64。脚本编译静态库、两个示例、两个测试并自动运行测试。

MSVC 用户可在 Visual Studio 开发者命令行运行 cmake -S . -B build/msvc -A x64,再使用 cmake --build build/msvc --config Release。预编译的 lib/windows-x64/llvm-mingw/libpolaris_ui.a 属于 LLVM-MinGW / libc++ ABI,不能直接作为 MSVC .lib 使用;MSVC 必须从源码重编译。

接入项目

公开头文件为 include/polaris/ui.hpp,命名空间为 polaris::ui。完整可运行示例见 examples/hello.cpp。

源码集成使用 CMake 的 add_subdirectory 与 PolarisUI::ui 目标。安装后支持 find_package(PolarisUI CONFIG REQUIRED):

cmake --install build/local --prefix build/installed
cmake -S examples/consumer -B build/consumer -G "MinGW Makefiles" -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-clang++.exe -DCMAKE_PREFIX_PATH="$PWD/build/installed" -DCMAKE_EXE_LINKER_FLAGS=-static
cmake --build build/consumer

普通应用只需链接 PolarisUI::ui,Win32、WGL、IME、COM 系统依赖由该目标传递。

已实现

提供标签、玻璃面板、按钮、复选框、开关、单选框、滑块、单行文本框、数值步进、下拉选择、标签导航、滚动列表、进度条、分隔线、徽标、提示和材质配置面板。控件使用立即模式,稳定且唯一的字符串 ID 保存焦点、捕获、光标和滚动状态。

文字使用 UTF-8,支持 Unicode 码点删除、方向键、Home/End、Ctrl+A、Ctrl+V,以及系统 IME 提交。使用系统字体的灰度字形纹理图集,不包含字体文件。当前不是完整的 Unicode 排版引擎,不提供 SDF 字体、复杂文字 shaping、富文本、多行编辑、撤销/重做或自定义 IME 预编辑界面。

玻璃保留可调 tint、blur、sigma、refraction、shine、dispersion、surface opacity 和贝塞尔圆角。设为 Theme::liquid() 后,tint、blur 和 sigma 均为 0,refraction 为 30;背景保持清晰,玻璃边缘仍产生屏幕空间采样偏移。

验证与文档

scripts/import-renderer.mjs 仅用于在完整 Java SDK 仓库中同步 C 渲染器和着色器。发布包已包含转换后的 src/gpu.c 和 src/shaders.hpp;正常编译不需要 Java SDK 或 Node.js。