22 setTextureCoordinatesTransform(QSGSimpleTextureNode::MirrorVertically);
23 setFiltering(QSGTexture::Linear);
25 m_map.reset(
new QMapboxGL(
nullptr, settings, size.expandedTo(minTextureSize), pixelRatio));
27 QObject::connect(m_map.data(), &QMapboxGL::needsRendering, geoMap, &QGeoMap::sgNodeChanged);
28 QObject::connect(m_map.data(), &QMapboxGL::copyrightsChanged, geoMap,
29 static_cast<
void (QGeoMap::*)(
const QString &)>(&QGeoMapMapboxGL::copyrightsChanged));
34 const QSize& minSize = size.expandedTo(minTextureSize);
35 const QSize fbSize = minSize * pixelRatio;
36 m_map->resize(minSize);
38 m_fbo.reset(
new QOpenGLFramebufferObject(fbSize, QOpenGLFramebufferObject::CombinedDepthStencil));
39 m_map->setFramebufferObject(m_fbo->handle(), fbSize);
41 QSGPlainTexture *fboTexture =
static_cast<QSGPlainTexture *>(texture());
43 fboTexture =
new QSGPlainTexture;
44 fboTexture->setHasAlphaChannel(
true);
47 fboTexture->setTextureId(m_fbo->texture());
48 fboTexture->setTextureSize(fbSize);
51 setTexture(fboTexture);
55 setRect(QRectF(QPointF(), minSize));
56 markDirty(QSGNode::DirtyGeometry);
61 QOpenGLFunctions *f = window->openglContext()->functions();
62 f->glViewport(0, 0, m_fbo->width(), m_fbo->height());
65 f->glGetIntegerv(GL_UNPACK_ALIGNMENT, &alignment);
69 f->glClearColor(0.f, 0.f, 0.f, 0.f);
70 f->glColorMask(
true,
true,
true,
true);
71 f->glClear(GL_COLOR_BUFFER_BIT);
77 f->glPixelStorei(GL_UNPACK_ALIGNMENT, alignment);
79 window->resetOpenGLState();
80 markDirty(QSGNode::DirtyMaterial);
93 m_map.reset(
new QMapboxGL(
nullptr, settings, size, pixelRatio));
94 QObject::connect(m_map.data(), &QMapboxGL::needsRendering, geoMap, &QGeoMap::sgNodeChanged);
95 QObject::connect(m_map.data(), &QMapboxGL::copyrightsChanged, geoMap,
96 static_cast<
void (QGeoMap::*)(
const QString &)>(&QGeoMapMapboxGL::copyrightsChanged));
107 QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
108 f->glViewport(state->scissorRect().x(), state->scissorRect().y(), state->scissorRect().width(), state->scissorRect().height());
109 f->glScissor(state->scissorRect().x(), state->scissorRect().y(), state->scissorRect().width(), state->scissorRect().height());
110 f->glEnable(GL_SCISSOR_TEST);
113 f->glGetIntegerv(GL_UNPACK_ALIGNMENT, &alignment);
118 f->glPixelStorei(GL_UNPACK_ALIGNMENT, alignment);
123 return QSGRenderNode::DepthState
124 | QSGRenderNode::StencilState
125 | QSGRenderNode::ScissorState
126 | QSGRenderNode::ColorState
127 | QSGRenderNode::BlendState
128 | QSGRenderNode::ViewportState
129 | QSGRenderNode::RenderTargetState;
void render(QQuickWindow *)
QSGMapboxGLTextureNode(const QMapboxGLSettings &, const QSize &, qreal pixelRatio, QGeoMapMapboxGL *geoMap)
void resize(const QSize &size, qreal pixelRatio)