Skip to content

Alpha v1.0.1

Pre-release
Pre-release

Choose a tag to compare

@Ender-William Ender-William released this 15 Aug 21:21
· 64 commits to main since this release
79ed59c

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+ 演示页遍历与亮 / 暗截图回归