コード例 #1
0
ファイル: qsgcontext.cpp プロジェクト: mortenelund/qt
QSGTexture *QSGContext::createTexture(const QImage &image) const
{
    QSGPlainTexture *t = new QSGPlainTexture();
    if (!image.isNull())
        t->setImage(image);
    return t;
}
コード例 #2
0
/*!
    Creates a texture object that wraps the GL texture \a id uploaded with \a size

    Valid \a options are TextureHasAlphaChannel and TextureOwnsGLTexture

    The caller takes ownership of the texture object and the
    texture should only be used with this engine.

    \sa createTextureFromImage(), QSGSimpleTextureNode::setOwnsTexture(), QQuickWindow::createTextureFromId()
 */
QSGTexture *QSGEngine::createTextureFromId(uint id, const QSize &size, CreateTextureOptions options) const
{
    Q_D(const QSGEngine);
    if (d->sgRenderContext->isValid()) {
        QSGPlainTexture *texture = new QSGPlainTexture();
        texture->setTextureId(id);
        texture->setHasAlphaChannel(options & TextureHasAlphaChannel);
        texture->setOwnsTexture(options & TextureOwnsGLTexture);
        texture->setTextureSize(size);
        return texture;
    }
    return 0;
}
コード例 #3
0
QSGTexture *QQuickContext2DFBOTexture::textureForNextFrame(QSGTexture *lastTexture, QQuickWindow *)
{
    QSGPlainTexture *texture = static_cast<QSGPlainTexture *>(lastTexture);

    if (m_onCustomThread)
        m_mutex.lock();

    if (m_fbo) {
        if (!texture) {
            texture = new QSGPlainTexture();
            texture->setHasAlphaChannel(true);
            texture->setOwnsTexture(false);
            m_dirtyTexture = true;
        }

        if (m_dirtyTexture) {
            if (!m_gl) {
                // on a rendering thread, use the fbo directly...
                texture->setTextureId(m_fbo->texture());
            } else {
                // on GUI or custom thread, use display textures...
                m_displayTexture = m_displayTexture == 0 ? 1 : 0;
                texture->setTextureId(m_displayTextures[m_displayTexture]);
            }
            texture->setTextureSize(m_fbo->size());
            m_dirtyTexture = false;
        }

    }

    if (m_onCustomThread) {
        m_condition.wakeOne();
        m_mutex.unlock();
    }

    return texture;
}
コード例 #4
0
QSGTexture *QQuickDefaultTextureFactory::createTexture(QQuickWindow *) const
{
    QSGPlainTexture *t = new QSGPlainTexture();
    t->setImage(im);
    return t;
}