Repository navigation
Alpha v1.0.1
Pre-release
Pre-release
·
64 commits
to main
since this release
InstructionX_UIKit alpha-v1.0.1
蓝图节点图 GPU 加速渲染版本。本次更新的核心是蓝图画布渲染后端重构:在保持公共 API 完全不变的前提下,引入 GPU 辅助绘制,显著改善高分辨率(4K+)与大节点量场景下的平移 / 缩放流畅度。已集成旧版本的项目只需升级组件库,无需修改任何代码。
亮点:蓝图画布 GPU 加速渲染
画布绘制改由内部视口承载,运行时自动选择后端:
- GL 后端(默认,可用时):视口基于
QOpenGLWidget,背景 / 网格 / 连线 / 节点位图合成走 GPU。无可见自定义体(body_builder)的节点以缓存位图代理由视口统一绘制,平移 / 缩放 / 拖动期间节点内容零重绘;带可见自定义体的节点自动回退为真实控件渲染。 - 软件后端(自动回退):无 GL 环境(含
QT_QPA_PLATFORM=offscreen的测试环境)自动使用普通 QWidget 视口,行为与历史版本完全一致,离屏测试与截图回归不受影响。 - 环境变量
UIKIT_BLUEPRINT_GL可手动控制:auto(默认)/on(强制尝试,失败回退并记 WARNING)/off(强制软件渲染,可用于排查显示问题)。
配套绘制优化(两条后端同时受益):
- 网格平铺纹理缓存;连线路径 / 包围盒 / 采样点缓存与视口裁剪、命中测试包围盒粗筛
- 节点选中发光改由画布层自绘(移除
QGraphicsEffect);引脚坐标等热点数据缓存 - 拖动 / 悬停 / 框选 / 流动虚线改为局部重绘;视图手势期间跳过逐节点几何落位,手势结束统一补偿;滚轮缩放防抖
实测参考(1080p 窗口、300 节点 / 450 边,桌面 OpenGL 4.6):
| 操作 | 优化前(纯 CPU) | 本版 GL 后端 |
|---|---|---|
| 画布平移 | 约 45 ms/帧 | 约 19 ms/帧 |
| 滚轮缩放 | 约 51 ms/帧 | 约 15 ms/帧 |
分辨率越高(4K+),GL 后端相对纯 CPU 绘制的优势越明显。
注意(Qt 固有行为):
QOpenGLWidget加入已可见的顶层窗口时,Qt 会重建该窗口的原生句柄,表现为窗口短暂关闭后重开一次。建议在顶层窗口show()之前创建BlueprintCanvas(或预创建一次蓝图页面);启动时一次性创建并长期持有画布的应用不受影响。详见docs/USAGE.md§8.6。
新功能:蓝图节点注册表 owner 命名空间隔离
- 注册表键改为
(owner, type_name):多个插件 / 模块可注册同名节点类型但引脚定义不同,互不干扰 - 注册、查询、创建均可携带
owner关键字参数划定命名空间;owner=None为全局命名空间,不传 owner 的旧调用行为完全不变 - 画布、创建菜单、节点体构造全链路支持 owner 透传;同空间异定义覆盖记 WARNING
- 详见
docs/USAGE.md§8.4;Demo 蓝图页已改为标准用法示范(uikit-demo命名空间 +other-plugin共存演示)
修复
- 依赖声明:
pyproject.toml补充qrcode[pil]>=7.4,与requirements.txt保持一致(Issue #2) - Demo 蓝图页:修复选中节点时闪弹一个游离小窗口的问题(属性面板重建时控件被直接摘除父级、短暂成为可见顶层窗口)
- Demo 主窗口:修复首次切换到蓝图页时主窗口短暂关闭后重开的问题(蓝图页改为窗口显示前预创建)
兼容性
- 公共 API 零变化,旧项目直接升级即可
- 测试代码(
test分支)全部离屏通过:29 个测试脚本,含蓝图模块、75+ 演示页遍历与亮 / 暗截图回归