diff options
author | Yoann Lopes <yoann.lopes@nokia.com> | 2010-12-08 13:25:59 +0100 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@nokia.com> | 2010-12-08 13:25:59 +0100 |
commit | 35000ce69a75e0442758f6b2c124705d54258600 (patch) | |
tree | c1d896423721af5ff064c330fd06821ff796d1c8 | |
parent | 3ebaf02059c653c7b0e67ffef95999473126e5c4 (diff) |
Fixes QxPaintItem to use QSGTexture.
-rw-r--r-- | src/graphicsitems/nodes/qxpainternode.cpp | 23 | ||||
-rw-r--r-- | src/graphicsitems/nodes/qxpainternode.h | 1 |
2 files changed, 15 insertions, 9 deletions
diff --git a/src/graphicsitems/nodes/qxpainternode.cpp b/src/graphicsitems/nodes/qxpainternode.cpp index 575ac1d..74d2c3a 100644 --- a/src/graphicsitems/nodes/qxpainternode.cpp +++ b/src/graphicsitems/nodes/qxpainternode.cpp @@ -89,15 +89,20 @@ void QxPainterNode::preprocess() void QxPainterNode::updateTexture() { - // ### gunnar: port properly.. - // If we just made the DefaultTextureReference available in adapt.h, then this should be easy.. -// QGLTexture2DPtr ptr(QGLTexture2D::fromTextureId(m_fbo->texture(), m_fbo->size())); -// m_material.setTexture(ptr, m_item->opaquePainting()); -// m_material.setLinearFiltering(m_linear_filtering); -// m_materialO.setTexture(ptr, m_item->opaquePainting()); -// m_materialO.setLinearFiltering(m_linear_filtering); -// m_materialO.setOpacity(m_opacity); -// setMaterial(m_opacity == 1 ? &m_material : &m_materialO); + QSGTexture *texture = new QSGTexture; + texture->setTextureId(m_fbo->texture()); + texture->setTextureSize(m_fbo->size()); + texture->setAlphaChannel(m_item->opaquePainting()); + texture->setOwnsTexture(false); + texture->setStatus(QSGTexture::Ready); + m_texture = QSGTextureRef(texture); + + m_material.setTexture(m_texture, m_item->opaquePainting()); + m_material.setLinearFiltering(m_linear_filtering); + m_materialO.setTexture(m_texture, m_item->opaquePainting()); + m_materialO.setLinearFiltering(m_linear_filtering); + m_materialO.setOpacity(m_opacity); + setMaterial(m_opacity == 1 ? &m_material : &m_materialO); } void QxPainterNode::setSize(const QSize &size) diff --git a/src/graphicsitems/nodes/qxpainternode.h b/src/graphicsitems/nodes/qxpainternode.h index 1996f6c..32d4f97 100644 --- a/src/graphicsitems/nodes/qxpainternode.h +++ b/src/graphicsitems/nodes/qxpainternode.h @@ -75,6 +75,7 @@ private: QGLFramebufferObject *m_fbo; TextureMaterial m_material; TextureMaterialWithOpacity m_materialO; + QSGTextureRef m_texture; QSize m_size; qreal m_opacity; |