node->setSize(QSize(qRound(br.width()), qRound(br.height())));
node->setSmoothPainting(d->antialiasing);
node->setLinearFiltering(d->smooth);
+ node->setMipmapping(d->smooth);
node->setOpaquePainting(d->opaquePainting);
node->setFillColor(d->fillColor);
node->setContentsScale(d->contentsScale);
, m_dirtyContents(false)
, m_opaquePainting(false)
, m_linear_filtering(false)
+ , m_mipmapping(false)
, m_smoothPainting(false)
, m_extensionsChecked(false)
, m_multisamplingSupported(false)
void QSGPainterNode::updateTexture()
{
+ m_texture->setHasMipmaps(m_mipmapping);
m_texture->setHasAlphaChannel(!m_opaquePainting);
m_material.setTexture(m_texture);
m_materialO.setTexture(m_texture);
texture->setTextureSize(m_size);
m_texture = texture;
- m_material.setFiltering(m_linear_filtering ? QSGTexture::Linear : QSGTexture::Nearest);
- m_materialO.setFiltering(m_linear_filtering ? QSGTexture::Linear : QSGTexture::Nearest);
}
void QSGPainterNode::updateFBOSize()
markDirty(DirtyMaterial);
}
+void QSGPainterNode::setMipmapping(bool mipmapping)
+{
+ if (mipmapping == m_mipmapping)
+ return;
+
+ m_mipmapping = mipmapping;
+ m_material.setMipmapFiltering(mipmapping ? QSGTexture::Linear : QSGTexture::None);
+ m_materialO.setMipmapFiltering(mipmapping ? QSGTexture::Linear : QSGTexture::None);
+ m_dirtyTexture = true;
+}
+
void QSGPainterNode::setSmoothPainting(bool s)
{
if (s == m_smoothPainting)
void setLinearFiltering(bool linearFiltering);
bool linearFiltering() const { return m_linear_filtering; }
+ void setMipmapping(bool mipmapping);
+ bool mipmapping() const { return m_mipmapping; }
+
void setSmoothPainting(bool s);
bool smoothPainting() const { return m_smoothPainting; }
QRect m_dirtyRect;
bool m_opaquePainting;
bool m_linear_filtering;
+ bool m_mipmapping;
bool m_smoothPainting;
bool m_extensionsChecked;
bool m_multisamplingSupported;