我试图把它存储作为创建成员指针中访问相关的渲染对象,因此它可以在以后访问:如何从一个QQuickFramebufferObject
QQuickFramebufferObject::Renderer* MyItem::createRenderer() const {
m_renderer = new MyItemRenderer(this);
return m_renderer;
}
...但是这行不通 - Qt要求createRenderer
是一个const方法,所以我不能在其中分配m_renderer。我可以使用mutable
,但这是一种黑客行为,具有风险,因为它可能会破坏Qt内部的假设。
任何正确的方法?
顺便说一句,你为什么需要这样做? – peppe
@peppe:因为我在QML之上实现了一个类似于QtQuick的系统(称为Snappy);在我的系统中,我希望子项的渲染器能够访问SnappyScene的渲染器(SnappyScene包含我系统中的所有项),因为这样他们就可以访问其modelViewMatrixStack,它的currentShader等。并且为了实现该访问,我遍历这样的指针:SomeSnappyItemRenderer - > SomeSnappyItem - > SnappyScene - > SnappyScene :: Renderer。 SnappyScene来自QQFBO。 –
从概念上讲,QQFBO的设计是将所有状态存储在QQFBO子类中,渲染器访问它并*复制*渲染所需的东西(因为多线程而复制)。 – peppe