背景:kanzi运行后,在调试阶段,如果某节点有问题,比如不显示,调查起来比较麻烦。需要反复导出kzb进行调查。如果能够实时查看节点状态,和预览效果,对调试很有帮助。
1. 设计方案
在kanzi运行时候,启动一个子窗口,子窗口显示场景树节点和相关信息。

lib库采用kanzi 插件的工程做base,引入ImGui做界面。

- debugwindow_module 插件模块,用于kanzi调用
- debugwindow_imgui 窗口界面,包含定时器和场景树
- mynodeclass kanzi类,用于离屏渲染,获取kanzi节点渲染内容
最重要的预览实现
利用kanzi相关api,对某节点进行离屏渲染

2. 部分实现
2.1 离屏渲染
c
// 渲染到 FBO
kr->bindFramebuffer(m_fbo);
kr->setDefaultFramebuffer(m_fbo);
kr->setClearColor(ColorRGBA(0.0f, 0.0f, 0.0f, 0.0f));
kr->addClearTarget(GraphicsClearTargetColor0);
kr->addClearTarget(GraphicsClearTargetDepth);
kr->setClearDepthValue(1.0);
kr->clear();
Node2D* node2d = dynamic_cast<Node2D*>(mTargetNode.get());
if (node2d) {
node2d->render(renderer, compositionStack, baseTransform);
}
glReadPixels(0, 0, g_previewWidth, g_previewHeight, GL_RGBA, GL_UNSIGNED_BYTE, m_previewData);
kr->setDefaultFramebuffer(0);
kr->bindFramebuffer(0);
3. 效果

