kanzi 场景树预览

背景: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. 效果


相关推荐
chen_22716 天前
kanzi插件之节点树可视化
c#·kanzi
chen_2274 个月前
kanzi节点转换插件
c#·kanzi
chen_2274 个月前
动态桌面方案
c++·qt·ffmpeg·kanzi
染指11108 个月前
11.ImGui-加载字体和中文
c++·windows·imgui
爱看书的小沐1 年前
【小沐学GIS】基于C++绘制三维数字地球Earth(QT5、OpenGL、GIS、卫星)第五期
c++·qt·opengl·imgui·地球·卫星·gis地球
whoispo1 年前
Imgui处理glfw的鼠标键盘的方法
opengl·imgui·gflw·鼠标键盘事件
chen_2271 年前
kanzi做3d时钟屏保
3d·kanzi
chen_2271 年前
kanzi3.6.10 窗口插件-查找绑定信息
c#·kanzi
chen_2272 年前
在kanzi 3.9.8里使用API创建自定义材质
c++·材质·kanzi