禁止商用。所有使用 PolarisUI 的应用必须公开完整源码。许可全文
Windows x64 / C++17 / OpenGL 3.3+ · 不依赖 Java/JNI · 版本与校验值
渲染与宿主集成
数据路径
- Win32 窗口将鼠标、滚轮、键盘和已提交的 Unicode 文字收集为一帧
Input。 - C++
Ui根据稳定 ID 处理焦点、按下捕获、选择和滚动,向Canvas追加 64-float 绘制指令。 - GDI 将系统字体栅格化为灰度字形纹理图集;窗口和渲染器不访问 JVM。
- C GPU 引擎保存宿主 GL 状态,把宿主背景复制到离屏纹理,按 sigma 生成降采样模糊纹理。
- GLSL 3.30 按指令绘制玻璃、图形、文字和裁剪。玻璃边缘使用 SDF 法线偏移清晰背景采样;最后恢复宿主状态。
文件责任
| 路径 | 责任 | 构建依赖 |
|---|---|---|
include/polaris/ui.hpp | C++17 公开 API | 标准库 |
src/ui.cpp | 控件逻辑与绘制协议 | 标准库 |
src/windows.cpp | Win32/WGL、GDI、IME、PNG 与生命周期 | Windows SDK |
src/gpu.c | 独立 C/OpenGL 绘制引擎 | Windows SDK,不含 JNI |
src/shaders.hpp | 内嵌的 7 组 GLSL | 无外部资源 |
scripts/import-renderer.mjs | 更新时从原 SDK机械生成上述 C/GLSL | 仅更新流程需要 Node 和完整 Java SDK 源码 |
与 Java 版的关系
复用 Java 2.4.5 同一套 GLSL 和 64-float GPU 指令。C++ 实现自身的窗口、系统字体、输入与立即模式控件,并以本机函数调用提交指令;不是通过 JNI 调用 Java 控件的包装层。
这使两个版本共享 tint/blur/refraction 等材质的渲染语义,但它们的控件 API、布局机制、文字渲染和 ABI 不相同。Java 名称空间仍为 polaris.sdk.ui,C++ 使用 polaris::ui。
集成约束
只支持单个活动 Renderer,绑定构造线程和当前 WGL context。Window 持有稳定 HDC 与自有 WGL context,析构时释放窗口资源并恢复此前存在的宿主 context。渲染器须在窗口之前销毁。
GPU 引擎沿用原型的进程级 GL 函数指针和材质资源,因此目前不提供多窗口并行、跨线程渲染或多个 context 的资源共享。截图读取本应用 framebuffer,不读取桌面、其他窗口或其他进程。