48bool QOpenGLCustomShaderStage::setOnPainter(QPainter* p)
50 Q_D(QOpenGLCustomShaderStage);
51 if (p->paintEngine()->type() != QPaintEngine::OpenGL2) {
52 qWarning(
"QOpenGLCustomShaderStage::setOnPainter() - paint engine not OpenGL2");
56 qWarning(
"Custom shader is already set on a painter");
58 QOpenGL2PaintEngineEx *engine =
static_cast<QOpenGL2PaintEngineEx*>(p->paintEngine());
59 d->m_manager = QOpenGL2PaintEngineExPrivate::shaderManagerForEngine(engine);
60 Q_ASSERT(d->m_manager);
62 d->m_manager->setCustomStage(
this);
66void QOpenGLCustomShaderStage::removeFromPainter(QPainter* p)
68 Q_D(QOpenGLCustomShaderStage);
69 if (p->paintEngine()->type() != QPaintEngine::OpenGL2)
72 QOpenGL2PaintEngineEx *engine =
static_cast<QOpenGL2PaintEngineEx*>(p->paintEngine());
73 d->m_manager = QOpenGL2PaintEngineExPrivate::shaderManagerForEngine(engine);
74 Q_ASSERT(d->m_manager);
79 d->m_manager->setCustomStage(
nullptr);
80 d->m_manager =
nullptr;