Kanzi 4.1.1 版本说明

渲染 (Rendering)

  • 减少了 OpenGL 和 Vulkan 后端用于内部资源管理的内存。

  • OpenGL 渲染线程现在会设置其操作系统线程名称,因此它在调试器、性能分析器和线程列表中显示为 OpenGL Thread。这与 Vulkan 渲染线程的现有行为一致。

  • 在无绑定渲染中,Kanzi 现在会应用您在节点上设置的材质属性值。当节点覆盖其材质的某个属性时,Kanzi 会为该节点创建单独的 GPU 端材质条目。该覆盖不会影响使用同一材质的其他节点。要在应用程序代码中管理这些条目,请使用 GPUScene::registerMaterial、GPUScene::unregisterMaterial 和 GPUScene::getMaterialIndex 中接受覆盖该材质的节点作为参数的重载。

Kanzi Studio

  • Kanzi Studio 不再将被引用的工程保留在属于另一个工程的目录中。当您打开的工程引用了存储在另一个工程目录中的工程时,Kanzi Studio 会通过 Move nested referenced projects 对话框询问是否将其移出到同级目录,并更新所有指向该目录内的路径。如果您拒绝,Kanzi Studio 将不会打开该工程。您也不能再将存储在另一个工程目录中的工程添加为引用。

    当您添加为引用的工程在其自身目录中包含另一个工程时,Kanzi Studio 会针对该另一个工程询问同样的问题。如果您在此处拒绝,Kanzi Studio 会保留您已打开的工程,仅使您添加的工程保持未加载状态。

    移动操作会更改磁盘上的目录且无法撤消,并且不会更新 Kanzi Studio 之外指向已移动目录内的路径,例如构建脚本中的路径。

    请参阅 在何处存储被参考的工程 和 Kanzi 4.1.1 迁移指南。

  • 当 Kanzi Studio 在您打开的工程的目录下发现多个工程文件时,不再询问是否继续。该问题原本是针对存储在另一个工程目录中的工程,而 Kanzi Studio 现在会将这些工程移出到同级目录,不再进行询问。当您打开的工程的目录中包含多个根工程文件时,Kanzi Studio 仍然无法打开该工程,并会在加载失败时报告这一情况。请参阅 工程目录 和 在何处存储被参考的工程。

平台

  • 在动态加载插件的平台上,当您的应用程序使用动态 Kanzi Engine 库时,Kanzi 构建现在会将 Lua 插件与其他 Kanzi 库一起复制到应用程序输出目录。已部署的应用程序不再需要在库搜索路径中包含 Kanzi 安装目录,即可加载使用 Lua 的 kzb 文件。

    请参阅 部署 Lua 插件。

  • 修复了当同一触摸点在同一帧内收到多个触摸事件时,Kanzi 在 QNX 上丢弃触摸输入的问题。(INTE-1288)

Android

  • 工程模板现在通过 KANZI_LINK_KZLUA CMake 选项控制 Lua 插件,方式与其他可选的 Kanzi Engine 插件相同。在 Android 上,只有当应用程序链接了某个 Kanzi Engine 插件时,该插件才会进入 APK,因此使用 Lua 的 Android 工程必须在该工程的 kanzinative/build.gradle 中启用此选项。工程模板的 Android 配置默认启用此选项。

    请参阅 部署 Lua 插件。

显著修复

Kanzi Engine

  • 修复了值为非有限值(NaN 或无穷大)的浮点跟踪采样会向跟踪文件写入无效的 JSON 标记,从而损坏该文件,导致 Chrome tracing 和 Perfetto 等跟踪查看器无法加载该文件的问题。Kanzi 现在在写入跟踪文件时会省略非有限的浮点采样。(RENDERING-3096)

  • 当 Kanzi 无法加载 Kanzi Engine 插件时,错误信息现在会给出它尝试打开的库文件名称,包含动态加载器报告的错误(在 Windows 上为数字错误代码),并说明必须将插件库与应用程序一起部署。以前错误信息仅给出插件名称,无法表明应用程序包中缺少该库。(ANDROID-2131)

  • 修复了 Property Target Interpolator 或 Property Target Easing Interpolator 阻止应用程序进入无限期挂起状态的问题。只要插值器处于附加状态,Kanzi 就会将插值报告为正在进行的动画,即使被插值的属性已达到其目标值并停止变化也是如此。因此,节点树中任何位置的单个插值器都会使应用程序以帧率持续唤醒,从而增加 CPU 负载。Kanzi 现在会将已达到目标的插值报告为不再进行,并在您为被插值的属性设置新值时再次将其报告为正在进行。(FMW-1394)

    请参阅 应用程序空闲状态。

  • 修复了 Kanzi 忽略材质类型的 Keep Alive Behavior 属性的问题。Kanzi 从 kzb 文件加载的材质类型重新遵循该属性。该问题由 Kanzi 4.1.0 引入。无论工程如何设置,新加载的材质类型始终获得”不保持活动状态”,因此当材质类型的最后一个使用者释放该材质类型时,Kanzi 会释放该材质类型的着色器程序,并在下次使用该材质类型时付出着色器编译的开销。当应用程序清除资源时,以及当应用程序使用 Optimize Memory 策略时,都会发生这种情况。当 Kanzi 重新创建其图形资源时(例如在图形上下文丢失之后),它会从错误的位置读取该属性,并始终获得”保持活动状态”。因此,材质类型具有这两个值中的哪一个,取决于自 Kanzi 加载该材质类型以来图形上下文是否丢失过。此修复将 kzb 文件格式版本从 45.0 改为 45.1,因此请使用此版本的 Kanzi Studio 重新导出您的工程:Kanzi 仅加载其预期的格式版本。(KANZIUX-841)

    请参阅 Kanzi 4.1.1 迁移指南。

  • 修复了在某个客户端应用程序的窗口丢失其表面后,Kanzi Android Service 终止服务主机进程(以及随之终止所有客户端应用程序)的问题。例如,当您将一个客户端应用程序移至后台,然后与另一个客户端应用程序交互时,就会发生这种情况。Kanzi Android Service 会继续使用表面已丢失的客户端应用程序的 Kanzi 视图,而使用该窗口的表面会导致进程终止。请针对与主机相同版本的 Kanzi 重新构建服务主机的客户端应用程序。(ANDROID-2130)

Kanzi Studio

  • 修复了在子工程存储于主工程目录中的多工程解决方案中,Kanzi Studio 在运行 Save All 时似乎冻结、可能显示 Project modified 对话框,以及在保存子工程时可能崩溃的问题。(FMW-1319)

  • 修复了 Kanzi 安装程序未包含 Android Service application 工程模板,导致 Kanzi Studio 不提供该模板、您无法创建 Kanzi Android Service 工程的问题。安装程序现在包含该模板及其主机服务和客户端应用程序。(ANDROID-2113)

  • 修复了 Kanzi Studio 无法打开工程并报错 [NullGuard] applicationConfiguration is null 的问题。该问题由 Kanzi Studio 4.1.0 引入,在磁盘上缺少基于图像的光照立方体贴图纹理所生成的面或粗糙度 mipmaps 时发生。Kanzi Studio 将这些生成的内容存储在默认 .gitignore 所排除的目录中。因此,受影响工程的每个新克隆都无法打开,而该工程在创建它的计算机上仍能正常打开。现在 Kanzi Studio 会根据源图像重新生成缺失的内容。当 Kanzi Studio 无法重新生成内容时,会在 Log 窗口中报告原因并打开工程。例如,当源图像已不在工程中时就会出现这种情况。(FMW-1355)

    现在 Kanzi Studio 会在一次处理中重新生成工程中所有基于图像的光照立方体贴图纹理的内容,因此包含多个此类纹理的工程打开速度更快。

    请参阅 使用版本控制系统与 Kanzi。 和 使用基于图像的照明立方体贴图纹理。

渲染 (Rendering)

文档 (Documentation)

  • 修复了 Kanzi Engine C++ API 参考中记录的 loadShaderProgramCreateInfo 签名在 Kanzi 中不会被构建的问题。Kanzi 4.1.0 API 参考显示该函数同时接受 ReadOnlyMemoryFile 和 KzbMemoryParser,这是 Kanzi 在编译时排除的代码路径的签名,因此按照该页面编写的调用无法链接。现在 API 参考记录的是 Kanzi 导出的签名。(DOC-1065)

另请参阅

Kanzi 4.1.1 迁移指南

已知问题