在 Preview 中分析您的应用程序

在 Preview 中,点击 image0 以分析应用程序的性能和结构。

在 Analyze 模式下,右键点击 image1 或使用 Preview 主菜单选择您要分析的项的类型。

../../_images/debug-mode.png

除了 Preview Analyze 模式外,Kanzi 还提供了其他方法来帮助您分析应用程序。请参阅 排除应用程序性能问题 和 最佳实践。

小技巧

要自定义 Kanzi Studio 在 Analyze 模式下显示不同类型项目的方式,请选择 Edit > User Preferences,并在 Preview 选项卡中设置项目的颜色和线条粗细。

../../_images/preferences-preview.png

选择和布局

../../_images/selection.png

Selection 突出显示所选节点。请参阅 在 Preview 中编辑您的应用程序。。

../../_images/debug-objects.png

Debug objects 显示:

  • 可视化节点,例如光源、摄像机和布局节点。

  • 您为自定义 3D 节点创建的调试可视化。有关此类可视化的示例,请参阅 Node3D 插件示例。

../../_images/allocated-layout.png

Allocated layout 显示了分配给布局下项目的空间的边界框。请参阅 布局控制节点。

../../_images/actual-layout.png

Actual layout 显示布局下项目使用的空间的边界框。请参阅 布局控制节点。

../../_images/grid-cells.png

Grid cells 显示 Grid Layout 2D 节点的单元格。请参阅 使用 Grid Layout 节点。

标尺、参考线和边框

../../_images/rullers-and-guide.png

Rulers and guides 显示标尺和指南,这些有助于您在应用程序中定位元素。请参阅 使用标尺和参考线。

../../_images/border-of-2d-nodes.png

Borders of 2D nodes 用条纹线勾勒出 2D 节点的边界。

3D 内容

../../_images/3d-grid.png

3D Grid 在 Scene 节点中显示地面网格。

../../_images/bounding-volumes.png

Bounding volumes 显示封闭体积中的网格。

渲染 (Rendering)

../../_images/framebuffer.png

Framebuffer objects 用半透明的黄色移动条纹标记节点,这些节点被渲染到纹理中并导致帧缓冲对象切换。

请参阅 渲染最佳实践。

../../_images/undrawn.png

Undrawn area 显示了应用程序屏幕之外区域的更新以及未渲染内容的区域。

../../_images/transparency.png

Transparency 用半透明的蓝色移动条纹标记透明节点。请参阅 配置节点以实现高效渲染。

../../_images/overdrawn.png

Overdraw 可视化表示 Kanzi 多次渲染到同一像素的区域。较浅的绿色表示较高的过度绘制量。

请参阅 使用 Sorting Filter 防止过度绘制。。

../../_images/wireframe.png

Wireframe 以线框模式绘制所有内容,该模式显示网格的几何结构。

请记住,Kanzi 将线框模式全局应用于内容。例如,该模式还将后期处理效果和您使用渲染通道在屏幕上绘制的内容呈现为线框。

../../_images/vertex-normals.png

Vertex normals 将网格顶点的法线可视化为 RGB 颜色。

红色、绿色和蓝色颜色通道的值表示网格局部空间中法线方向向量的 x、y 和 z 值。Kanzi 根据以下公式从相应方向向量分量的值计算每个颜色通道的值:

\[ColorChannel = 0.5 + 0.5 * VectorComponent\]

性能

  • Performance HUD 显示了 Kanzi 应用程序在过去 500 帧中的整体性能指标,包括:

    • Frame Duration (ms) 以毫秒为单位显示渲染最后一帧的时间及平均、最高和最低耗时。

      Frame Duration (ms) 图中的最高值显示最长时间,最低值是最近 500 帧期间渲染一帧所用的平均时间。

      使用此信息来识别您的 Kanzi 应用程序中的性能瓶颈。例如,您可以使用它通过将渲染分布在多个帧上来找出如何提高应用程序的性能。请参阅 在多个帧之间分配渲染。

    • API 显示 Kanzi 使用的渲染 API,例如 OpenGL ES 或 Vulkan。它还显示显卡标识符和驱动程序版本。

      ../../_images/frame-duration-graph.png
    • Frames Per Second 显示每秒渲染的帧数。

    • Animation Duration (μs) 以微秒为单位显示执行应用程序中最近一帧的所有动画所需的时间及平均、最高和最低耗时。

    • Draw Count 显示执行了多少个单独的绘图调用。

      Draw Count 图中的最高值显示最近 500 帧期间的最高批处理数,最低值是最后一帧中的批处理数。

      ../../_images/draw-count-graph.png
    • Triangle Count 显示一帧中绘制的单独三角形的估计总数。

    • Pipeline Count 显示最后一帧中绑定新渲染管线的次数。请参阅 减少着色器切换。

    • Pass Count 显示最后一帧中使用了多少个渲染通道。请参阅 渲染最佳实践。

    • Memory Upload 显示最后一帧使用了多少字节的滚动暂存内存以及缓冲区总大小。暂存内存包含 Uniform 数据以及用于更新顶点缓冲区或纹理等 GPU 资源的临时存储。在某些平台上,每种类型的数据使用各自独立的缓冲区。

    • Dispatch Count 显示最后一帧中使用了多少次计算调度。

    • Kanzi Graphics Objects 显示已创建的 Kanzi Graphics 对象的摘要。括号中是最后一帧中创建和删除的对象数量。

    • View Camera 显示用于在您的应用程序中显示场景的 Camera 节点的名称。

    • Resource Memory Use 显示您的 Kanzi 应用程序使用的本地 GPU 内存 (VRAM) 和非本地 GPU 内存 (RAM) 的估计量。

      Performance HUD 在 Kanzi Studio Preview 中显示的值与您在目标设备上运行 Kanzi 应用程序时的值不同,因为 Kanzi Studio 会加载并在内存中保留应用程序中的所有资源。

    • Timers 显示 MainLoopScheduler 中已注册的计时器处理程序的数量。计时器处理程序过多可能会降低应用程序的性能。请参阅 添加计时器。

      您可以通过调用 MainLoopScheduler::getTimersCount 在 Kanzi Engine API 中访问计时器订阅的数量。

    • Recurring Tasks 显示添加到主循环调度器各阶段的任务总数。Kanzi Engine 默认会添加一些任务。请参阅 添加重复任务。

      您可以通过调用 MainLoopScheduler::getTasksTotalCount 在 Kanzi Engine API 中访问重复任务的数量。

    • Animations 显示您 Kanzi 应用程序中活动的和所有的动画数量。

      您可以在 Kanzi Engine API 中访问动画的数量:

  • Frame time HUD 显示 Kanzi 应用程序在过去 500 帧中的以下帧时间指标:

    • Frame Duration (ms) 以毫秒为单位显示渲染最后一帧的时间及平均、最高和最低耗时。

    • Frames Per Second 显示每秒渲染的帧数。

    • Animation Duration (μs) 以微秒为单位显示执行应用程序中最近一帧的所有动画所需的时间及平均、最高和最低耗时。

Preview 日志文件

Kanzi Studio 将 Preview 日志消息存储在 %USERPROFILE%\AppData\Local\Temp\KanziStudioLogs\KanziPreview.log 文件中。

要设置日志记录详细程度,请在 <KanziInstallation>\Studio\Bin\KanziPreview.exe.config 文件中设置 logLevel 键的值:

  • NORMAL 将 Kanzi Studio 设置为记录常规 Kanzi Studio Preview 流程,包括错误和异常。

  • VERBOSE 将 Kanzi Studio 设置为记录 Kanzi Studio 和 Preview 之间的所有低级通信,精确到毫秒级。

    当您将日志级别设置为 VERBOSE 时,大量的日志消息可能会降低 Kanzi Studio 的性能。

  • NONE 将 Kanzi Studio 设置为不向 KanziPreview.log 文件记录任何消息。

例如,要记录 Kanzi Studio 和 Preview 之间的所有通信,请在文本编辑器中打开 KanziPreview.exe.config 文件,并设置:

<add key="logLevel" value="VERBOSE"/>

要将更改应用到 KanziPreview.exe.config,保存 KanziPreview.exe.config 文件并按 Ctrl F8 以重启 Preview。请参阅 控制 Preview。

每次重新启动 Preview 时,Kanzi Studio 会覆盖 KanziPreview.log 文件的内容。

另请参阅

排除应用程序性能问题

在 Preview 中编辑您的应用程序。

预览 (Preview)

查找无效的项目项

使用标尺和参考线