summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@nokia.com>2010-12-08 13:25:59 +0100
committerYoann Lopes <yoann.lopes@nokia.com>2010-12-08 13:25:59 +0100
commit35000ce69a75e0442758f6b2c124705d54258600 (patch)
treec1d896423721af5ff064c330fd06821ff796d1c8
parent3ebaf02059c653c7b0e67ffef95999473126e5c4 (diff)
Fixes QxPaintItem to use QSGTexture.
-rw-r--r--src/graphicsitems/nodes/qxpainternode.cpp23
-rw-r--r--src/graphicsitems/nodes/qxpainternode.h1
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;