我試圖把它存儲作爲創建成員指針中訪問相關的渲染對象,因此它可以在以後訪問:如何從一個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