49bool QOpenGLCustomShaderStage::setOnPainter(QPainter* p)
51 Q_D(QOpenGLCustomShaderStage);
52 if (p->paintEngine()->type() != QPaintEngine::OpenGL2) {
53 qWarning(
"QOpenGLCustomShaderStage::setOnPainter() - paint engine not OpenGL2");
57 qWarning(
"Custom shader is already set on a painter");
59 QOpenGL2PaintEngineEx *engine =
static_cast<QOpenGL2PaintEngineEx*>(p->paintEngine());
60 d->m_manager = QOpenGL2PaintEngineExPrivate::shaderManagerForEngine(engine);
61 Q_ASSERT(d->m_manager);
63 d->m_manager->setCustomStage(
this);
67void QOpenGLCustomShaderStage::removeFromPainter(QPainter* p)
69 Q_D(QOpenGLCustomShaderStage);
70 if (p->paintEngine()->type() != QPaintEngine::OpenGL2)
73 QOpenGL2PaintEngineEx *engine =
static_cast<QOpenGL2PaintEngineEx*>(p->paintEngine());
74 d->m_manager = QOpenGL2PaintEngineExPrivate::shaderManagerForEngine(engine);
75 Q_ASSERT(d->m_manager);
80 d->m_manager->setCustomStage(
nullptr);
81 d->m_manager =
nullptr;