Qt 5.5 的 Qt3D 示例中的 ForwardRenderer 是啥?
Posted
技术标签:
【中文标题】Qt 5.5 的 Qt3D 示例中的 ForwardRenderer 是啥?【英文标题】:What is ForwardRenderer in Qt 5.5's Qt3D examples?Qt 5.5 的 Qt3D 示例中的 ForwardRenderer 是什么? 【发布时间】:2015-11-18 06:34:59 【问题描述】:Assimp example of Qt3d of Qt 5.5 uses ForwardRenderer.
我复制了代码,并在main.qml
QtCreator 中显示该名称下的红线表示未知组件。点击那个词不会带我去任何地方。
程序正在编译,没有任何错误,运行时只显示一个蓝色窗口。
什么是 ForwardRenderer? 为什么会有红线?
【问题讨论】:
【参考方案1】:这是 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 以及它如何处理 Forward Renderer:http://www.kdab.com/qt3d-2-0-framegraph/
ForwardRenderer 本身不是 FrameGraph 节点类型。它是为方便用户而提供的前向渲染器的默认 FrameGraph 树实现。
更新:手动重新创建
通过检查 C++,我能够完全在 QML 中重新创建 ForwardRenderer
// 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 中的一个错误。不应将其标记为错误。
【讨论】:
以上是关于Qt 5.5 的 Qt3D 示例中的 ForwardRenderer 是啥?的主要内容,如果未能解决你的问题,请参考以下文章