QQuickFramebufferObject是主体,另外两个是辅助。QSGFramebufferObjectNode存在于渲染线程中,负责将自定义的几何元素渲染到FBO中。QOpenGLFramebufferObject就是具体的openGL中FBO的封装映射。
qtdeclarative\src\quick\items\qquickframebufferobject.h
class Q_QUICK_EXPORT QQuickFramebufferObject : public QQuickItem
{
class Q_QUICK_EXPORT Renderer {
virtual QOpenGLFramebufferObject *createFramebufferObject(const QSize &size);
friend class QSGFramebufferObjectNode;
}
}
qtdeclarative\src\quick\items\qquickframebufferobject.cpp
class QSGFramebufferObjectNode : public QSGTextureProvider, public QSGSimpleTextureNode
{
}
QSGNode *QQuickFramebufferObject::updatePaintNode(QSGNode *node, UpdatePaintNodeData *)
{
d->node = new QSGFramebufferObjectNode;
n = d->node;
n->fbo = n->renderer->createFramebufferObject