Kanzi 3.9.16 版本说明

更改

  • 更新了以下第三方库:

    • Zlib 从 1.2.13 更新为 1.3.2。

    • LibPNG 从 1.6.37 更新为 1.6.55。

    • FreeType 从 2.12.1 更新为 2.14.3。FreeType 更新了其内部 TrueType 解释器。这可能会使文本渲染出现细微差异。

    • HarfBuzz 从 8.3.0 更新为 13.2.1。此更新更改了文本整形行为,可能会导致文本布局出现细微差异。

平台

  • DRM/GBM 平台现在会使 GBM 表面格式与请求的 EGL 配置相匹配。以前,该格式始终为 GBM_FORMAT_XRGB8888。

渲染 (Rendering)

  • 新增了针对兼容网格的动态批处理。动态批处理通过分批渲染兼容网格来减少绘制调用。为要进行批处理的网格启用 Dynamic Batching,并使用新的动态批处理渲染通道渲染这些网格。Kanzi Studio 还提供了 Dynamic Shaders 和 Dynamic UBO Shaders 工具,用于调整材质着色器以适用于动态批处理。

    下图合并了两个独立的示例:场景示例中的批处理数,以及 30 FPS 性能测试中的应用程序 CPU 使用率。

    动态批处理的批处理数和应用程序 CPU 使用率对比

    动态批处理降低了场景示例中的批处理数,以及独立性能测试中的应用程序 CPU 使用率。

    请参阅 使用动态批处理。

  • 新增了对 3D 内容的时间性抗锯齿 (TAA) 支持。

    根据所需的图像质量和可用的渲染资源,选择 Performance TAA、Default TAA 或 Quality TAA。Quality TAA 可提高静止的细微接缝和缓慢旋转的轮廓的稳定性,但会占用更多内存带宽和图形内存。您可以选择 TAA 配置文件,并为各个节点控制运动矢量的生成。

    使用 TAA Result Depth Source 为基于深度的后期处理(例如景深)提供不含 TAA 抖动的深度。请参阅 使用时间性抗锯齿 和 选择 TAA 模式。

  • Kanzi Studio 现在支持对立方体贴图纹理进行 ASTC 压缩。立方体贴图的六个面使用共享的图像属性,您可以通过 NegZ Image 属性配置这些属性。请参阅 使用 ASTC 压缩立方体贴图纹理。

文本 (Text)

  • 新增了对 FreeType 字体回退的支持。

    ../../_images/FreeType-font-fallback-font-Hello.png

    使用 Font UScriptCode 和 Fallback Font Family 为包含多种书写系统的文本配置字体。对于 Font UScriptCode 中未列出的书写系统,请使用 Extended。要在正文文本旁显示 emoji,请将包含 emoji 的 Font Family 添加到 Fallback Font Family,并将其 Font UScriptCode 设置为 Common。私用区 (PUA) 字符使用主 Font Family 中的字体。

    请参阅 使用字体回退。

  • 新增了使用 FreeType 字体引擎渲染彩色 emoji 的支持。

    ../../_images/FreeType-color-emoji.png

    Kanzi 可渲染 CBDT、SBIX 和 COLRv0 字体中的彩色字形。可以导入使用 SVG 或 COLRv1 的字体,但其字形会以灰度轮廓渲染。使用 iType 时不支持彩色 emoji 渲染。

    请参阅 使用 FreeType 显示彩色表情符号。

Kanzi Studio 工具

在 Kanzi Studio 的 Tools 菜单中添加了以下工具:

  • Dynamic Shaders 和 Dynamic UBO Shaders 分别针对常规动态批处理和 UBO 动态批处理调整材质着色器。您可以选择需要为每个网格使用单独值的变量、更新所选内容以及撤销着色器更改。请参阅 使用着色器转换工具。

  • Animation Bake 将 FBX 模型中的骨骼动画烘焙为 EXR 纹理以用于 GPU 蒙皮,并将生成的资源导入您的工程。

    ../../_images/animation-bake-preview.gif

    请参阅 使用 Animation Bake。

  • Binding check 将当前解决方案中的属性绑定表达式、状态和节点路径导出到 Excel 报告中以供审查。请参阅 检查属性绑定。

  • Image Atlas 将工程中的图像合并为图集,并生成包含图像区域的 JSON 文件。当您导入仅包含 EXR 的图集时,该工具会更新匹配的骨骼动画材质以使用该图集。

    ../../_images/kanzi-tools-image-atlas.png

    请参阅 使用 Image Atlas。

文档 (Documentation)

  • 添加了 使用 Kanzi AI 工具 章节,其中包含 Kanzi API MCP 服务器和 Kanzi 文档 MCP 服务器的文档。使用这些服务器可将您的 AI 助手连接到 Kanzi API 参考和用户文档。

  • 将 Kanzi 文档 MCP 服务器更新为位于 https://docs.mcp.kanzi.com 的统一端点,该端点支持所有已加载的 Kanzi 版本。用于 Claude Desktop 的 mcpb 文件现在可从 https://docs.kanzi.com/mcp/kanzi-docs-mcp.zip 获取。请参阅 Kanzi 文档 MCP 服务器。

  • 全面改进了 docs.kanzi.com Documentation 网站上的搜索和 AI 助手体验,使您能够更快地找到所需内容,并获得更准确、有据可依的信息。现在,搜索会返回整个 Kanzi 文档中的结果,包括 Kanzi 框架、功能包和工具。您现在可以将搜索范围缩小到特定的文档集或 Kanzi 版本。新的 Ask Kanzi AI 助手基于相同的文档和 API 参考回答您的问题,并将您正在阅读的页面(以及您选择的任何文本)用作后续问题的上下文。有关如何使用搜索的详细信息,请参阅 搜索 Documentation。

  • Kanzi API MCP 服务器现在可以按继承关系枚举类型。新的 list_derived_types 工具以完整的、特定于版本的列表形式列出派生自某个基类型的所有类型,例如派生自 Node 的所有节点类型。get_type_hierarchy 工具显示类型的基类型和直接子类型,list_types 工具列出 API 集或命名空间中的类型。您的 AI 助手现在可以回答诸如“列出 Kanzi 中的所有节点类型”之类仅靠关键字搜索无法回答的问题。请参阅 Kanzi API MCP 服务器。

  • 现在,您可以让 AI 编程代理自行配置,从而一步设置两个 Kanzi MCP 服务器。将一条指令粘贴到代理中,它即可注册这两个服务器,无需手动配置。此方法适用于 Claude Code、VS Code、Cursor、Windsurf、Codex 以及任何其他支持 MCP 的工具。

    请参阅 快速设置。

  • Kanzi MCP 服务器不再在调用之间保留所选的 Kanzi 版本。现在,每个查询工具都接受一个可选的 version 参数,而 set_kanzi_version 和 set_version 仅确认某个版本是否可用,而不会切换到该版本。告诉您的 AI 助手您使用的 Kanzi 版本,它就会在每次调用时传递该版本。此更改源自 Model Context Protocol 的 2026-07-28 修订版,服务器在实现该修订版的同时,也实现了现有 AI 助手所使用的早期修订版。请参阅 Kanzi 文档 MCP 服务器 和 Kanzi API MCP 服务器。

Kanzi Engine

  • 修复了当列表滚动到靠近末尾的项目时,数据源批量替换其项目导致 3D 轨迹列表框 (Trajectory List Box 3D) 崩溃的问题。(FMW-993)

  • 修复了 QNX 屏幕平台上多点触控输入处理不正确的问题。多指手势报告了错误的触摸状态和坐标,超过十个同时触点的触摸被丢弃,静止的触点产生了虚假的移动事件。现在,Kanzi 会独立跟踪每个触摸点并正确报告触摸状态。(INTE-1275)

  • 修复了当 Activity Host 在没有动画的情况下激活或停用 Activity 节点时,该 Activity 节点不报告其状态的问题。例如,当您更改活动 Activity 的预设件时会发生这种情况。该 Activity 节点不会发送 ActivityConcept::ActivityActivatedMessage、ActivityConcept::ActivityDeactivatedMessage 和 ActivityConcept::StatusChangedMessage 中的任何消息。因此,Activated 和 Deactivated Activity 触发器不会运行。(FMW-1334)

    同一问题还会导致 Activity 节点停滞在 Activating 状态。当其预设件的 State Manager 中有一个由 Activity Status 属性控制的状态组时,会发生这种情况。该状态组缺少与某个 Activity Status 值对应的状态,因此它在没有 Transition 的情况下进入其第一个状态,并且没有任何对象报告该状态。随后,Activity Host 会一直等待一个永远不会完成的激活。

    现在,Activity Host 在发送这些消息之前,还会更新其报告为活动的 Activity。因此,激活或停用 Activity 节点的 Activity 状态消息处理程序能够看到其 Activity Host 的最新状态。

  • 添加了在 2D 堆栈布局 (Stack Layout 2D) 节点中按排版基线对齐文本块 2D 子节点的支持。启用 Baseline Alignment 属性可对齐使用不同字体大小的水平排列文本。请参阅 按基线对齐 Text Block 2D 节点。(CH-1)

  • 优化了绘图对象渲染通道 (Draw Objects Render Pass),避免冗余的对象列表遍历和渲染状态生成,从而降低 CPU 工作负载。(CH-8)

  • 修复了在 Wayland 平台上,当请求的非旧版表面色彩空间不受支持时,Kanzi 应用程序可能无法创建 EGL 窗口表面的问题。现在,Kanzi 会使用 Legacy 色彩空间重试创建表面,并针对色彩空间兼容性问题提供更详细的警告和错误消息。请参阅 使用 legacy color workflow。(CH-10)

  • 修复了持续触摸输入可能导致屏幕无响应或冻结的问题。(CH-18)

  • 修复了当主线程记录信息过时时,ResourceManager::wait 可能在 GL 挂起期间无限期挂起,从而导致 Kanzi 在关闭期间挂起 (ANR) 的问题。(CH-20)

  • 修复了空闲状态下的帧率补偿机制影响动画帧间隔稳定性的问题。(CH-32)

  • 修复了当主线程记录信息过时时,ResourceManager::wait 可能在 GL 挂起期间无限期挂起,从而导致 Kanzi 在关闭期间挂起 (ANR) 的问题。(CH-35)

  • 修复了触摸点数量变化时无法在捏合和平移手势之间动态切换的问题。(CH-36)

  • 优化了动态批处理渲染通道 (Dynamic Batching Render Pass),避免因不必要的渲染状态创建而导致偶发的帧时间峰值。(CH-44)

Kanzi Java API

  • 修复了通过 Node::addTunnelingMessageHandler 方法注册消息处理程序导致的内存泄漏。

  • 修复了创建 Kanzi 原生类的对象时发生的内存泄漏。

Kanzi Studio

  • 修复了在某些计算机上导致 Kanzi Studio 启动时崩溃的问题。(CH-48)

另请参阅

Kanzi 3.9.16 迁移指南

已知问题