Пример #1
0
static ApiTexture getTextureFrom(QVariantMap const &image, QString label)
{
    QSize size(image[QLatin1String("__width__")].toInt(),
               image[QLatin1String("__height__")].toInt());
    QString cls = image[QLatin1String("__class__")].toString();
    int depth =
        image[QLatin1String("__depth__")].toInt();
    QString formatName =
        image[QLatin1String("__format__")].toString();

    QByteArray dataArray =
        image[QLatin1String("__data__")].toByteArray();

    QString userLabel =
        image[QLatin1String("__label__")].toString();
    if (!userLabel.isEmpty()) {
        label += QString(", \"%1\"").arg(userLabel);
    }

    ApiTexture tex;
    tex.setSize(size);
    tex.setDepth(depth);
    tex.setFormatName(formatName);
    tex.setLabel(label);
    tex.setData(dataArray);
    return tex;
}
Пример #2
0
ApiTraceState::ApiTraceState(const QVariantMap &parsedJson)
{
    m_parameters = parsedJson[QLatin1String("parameters")].toMap();
    QVariantMap attachedShaders =
        parsedJson[QLatin1String("shaders")].toMap();
    QVariantMap::const_iterator itr;


    for (itr = attachedShaders.constBegin(); itr != attachedShaders.constEnd();
         ++itr) {
        QString type = itr.key();
        QString source = itr.value().toString();
        m_shaderSources[type] = source;
    }

    m_uniforms = parsedJson[QLatin1String("uniforms")].toMap();

    m_buffers = parsedJson[QLatin1String("buffers")].toMap();

    QVariantMap textures =
        parsedJson[QLatin1String("textures")].toMap();
    for (itr = textures.constBegin(); itr != textures.constEnd(); ++itr) {
        QVariantMap image = itr.value().toMap();
        QSize size(image[QLatin1String("__width__")].toInt(),
                   image[QLatin1String("__height__")].toInt());
        QString cls = image[QLatin1String("__class__")].toString();
        int depth =
            image[QLatin1String("__depth__")].toInt();
        QString formatName =
            image[QLatin1String("__format__")].toString();

        QByteArray dataArray =
            image[QLatin1String("__data__")].toByteArray();

        ApiTexture tex;
        tex.setSize(size);
        tex.setDepth(depth);
        tex.setFormatName(formatName);
        tex.setLabel(itr.key());
        tex.contentsFromBase64(dataArray);

        m_textures.append(tex);
    }

    QVariantMap fbos =
        parsedJson[QLatin1String("framebuffer")].toMap();
    for (itr = fbos.constBegin(); itr != fbos.constEnd(); ++itr) {
        QVariantMap buffer = itr.value().toMap();
        QSize size(buffer[QLatin1String("__width__")].toInt(),
                   buffer[QLatin1String("__height__")].toInt());
        QString cls = buffer[QLatin1String("__class__")].toString();
        int depth = buffer[QLatin1String("__depth__")].toInt();
        QString formatName = buffer[QLatin1String("__format__")].toString();

        QByteArray dataArray =
            buffer[QLatin1String("__data__")].toByteArray();

        ApiFramebuffer fbo;
        fbo.setSize(size);
        fbo.setDepth(depth);
        fbo.setFormatName(formatName);
        fbo.setType(itr.key());
        fbo.contentsFromBase64(dataArray);
        m_framebuffers.append(fbo);
    }
}
Пример #3
0
ApiTraceState::ApiTraceState(const QVariantMap &parsedJson)
{
    m_parameters = parsedJson[QLatin1String("parameters")].toMap();
    QVariantMap attachedShaders =
        parsedJson[QLatin1String("shaders")].toMap();
    QVariantMap::const_iterator itr;


    for (itr = attachedShaders.constBegin(); itr != attachedShaders.constEnd();
         ++itr) {
        QString type = itr.key();
        QString source = itr.value().toString();
        m_shaderSources[type] = source;
    }

    QVariantList textureUnits =
        parsedJson[QLatin1String("textures")].toList();
    for (int i = 0; i < textureUnits.count(); ++i) {
        QVariantMap unit = textureUnits[i].toMap();
        for (itr = unit.constBegin(); itr != unit.constEnd(); ++itr) {
            QVariantMap target = itr.value().toMap();
            if (target.count()) {
                QVariantList levels = target[QLatin1String("levels")].toList();
                for (int j = 0; j < levels.count(); ++j) {
                    QVariantMap level = levels[j].toMap();
                    QVariantMap image = level[QLatin1String("image")].toMap();
                    QSize size(image[QLatin1String("__width__")].toInt(),
                               image[QLatin1String("__height__")].toInt());
                    QString cls = image[QLatin1String("__class__")].toString();
                    QString type = image[QLatin1String("__type__")].toString();
                    bool normalized =
                        image[QLatin1String("__normalized__")].toBool();
                    int numChannels =
                        image[QLatin1String("__channels__")].toInt();

                    Q_ASSERT(type == QLatin1String("uint8"));
                    Q_ASSERT(normalized == true);

                    QByteArray dataArray =
                        image[QLatin1String("__data__")].toByteArray();

                    ApiTexture tex;
                    tex.setSize(size);
                    tex.setNumChannels(numChannels);
                    tex.setLevel(j);
                    tex.setUnit(i);
                    tex.setTarget(itr.key());
                    tex.contentsFromBase64(dataArray);

                    m_textures.append(tex);
                }
            }
        }
    }

    QVariantMap fbos =
        parsedJson[QLatin1String("framebuffer")].toMap();
    for (itr = fbos.constBegin(); itr != fbos.constEnd(); ++itr) {
        QVariantMap buffer = itr.value().toMap();
        QSize size(buffer[QLatin1String("__width__")].toInt(),
                   buffer[QLatin1String("__height__")].toInt());
        QString cls = buffer[QLatin1String("__class__")].toString();
        QString type = buffer[QLatin1String("__type__")].toString();
        bool normalized = buffer[QLatin1String("__normalized__")].toBool();
        int numChannels = buffer[QLatin1String("__channels__")].toInt();

        Q_ASSERT(type == QLatin1String("uint8"));
        Q_ASSERT(normalized == true);

        QByteArray dataArray =
            buffer[QLatin1String("__data__")].toByteArray();

        ApiFramebuffer fbo;
        fbo.setSize(size);
        fbo.setNumChannels(numChannels);
        fbo.setType(itr.key());
        fbo.contentsFromBase64(dataArray);
        m_framebuffers.append(fbo);
    }
}