2

Qt 5.5 的 Qt3d 的 Assimp 示例使用 ForwardRenderer

我复制了代码,并在main.qmlQtCreator 中显示该名称下的红线表示未知组件。点击那个词不会带我去任何地方。

该程序正在编译,没有任何错误,运行时只显示一个蓝色窗口。

什么是 ForwardRenderer?为什么那里有红线?

在此处输入图像描述

4

1 回答 1

5

以下是 Qt 网站上的正向渲染器文件:

https://doc.qt.io/archives/qt-5.6/qt3d-dynamicscene-cpp-forwardrenderer-H.html

https://doc.qt.io/archives/qt-5.6/qt3d-dynamicscene-cpp-forwardrenderer-cpp.html

这是 KDAB 的解释什么是 FrameGraph 以及它如何处理正向渲染器:http ://www.kdab.com/qt3d-2-0-framegraph/

ForwardRenderer 本身不是 FrameGraph 节点类型。它是为方便用户而提供的前向渲染器的默认 FrameGraph 树实现。

更新:手动重新创建

通过检查 C++,我能够ForwardRenderer完全在 QML中重新创建

    // FwdRenderer.qml
    RenderSettings {
        id: forward
        property Camera camera: null
        activeFrameGraph: TechniqueFilter {
            matchAll: [ FilterKey { name: "renderingStyle"; value: "forward" } ]
            RenderSurfaceSelector{
                Viewport {
                    normalizedRect: Qt.rect(0,0,1,1)
                    CameraSelector{
                        camera: forward.camera
                        ClearBuffers{
                            buffers: ClearBuffers.ColorDepthBuffer
                            clearColor: Qt.rgba(1.0,0,0,0.1)
                        }
                        FrustumCulling{
                        }
                    }
                }
            }
        }
    }

事实上,这有点酷。新类型FwdRenderer可以作为ForwardRenderer. 它对我理解 Framegraph 有很大帮助,希望对我有所帮助。

顺便说一句,红线是那个版本的 Qt Creator 中的一个错误。它不应该被标记为错误。

于 2015-11-18T06:55:51.973 回答