Beispiel #1
0
GLESRenderSpec::GLESRenderSpec(GLESRenderDevice* device)
{
	_vendor = (const char*) glGetString(GL_VENDOR);
	_renderer = (const char*) glGetString(GL_RENDERER);
	_version = (const char*) glGetString(GL_VERSION);
	StringVector extensions = StringUtil::tokenise((const char*) glGetString(GL_EXTENSIONS));
	_extensions.insert(extensions.begin(), extensions.end());

	// GLES 1.1
	// http://www.khronos.org/registry/gles/

	setCapable(RENDER_BLENDING);
	setCapable(RENDER_OCCLUSION);
	setCapable(RENDER_POINT_SPRITES);

	int value;
	value = 0; glGetIntegerv(GL_MAX_TEXTURE_SIZE, &value); _maxTextureSize = value;

	// GLES 1.1 extension 
	if (hasExtension("GL_OES_texture_npot"))
	{
		setCapable(TEXTURE_NPOT);
		setCapable(RT_TEXTURE_NPOT); // TODO: check again
	}

	if (hasExtension("GL_APPLE_texture_2D_limited_npot"))
	{
		setCapable(TEXTURE_NPOT);
		setCapable(RT_TEXTURE_NPOT); // TODO: check again
		setCapable(TEXTURE_NPOT_LIMITED);
	}

	if (hasExtension("GL_EXT_texture_compression_dxt1") && hasExtension("GL_EXT_texture_compression_dxt3") && hasExtension("GL_EXT_texture_compression_dxt5"))
	{
		setCapable(FORMAT_TEXTURE_DXT);
	}

	setCapable(FORMAT_TEXTURE_PVRTC, hasExtension("GL_IMG_texture_compression_pvrtc"));
	setCapable(FORMAT_TEXTURE_ETC1, hasExtension("GL_OES_compressed_ETC1_RGB8_texture"));

	// platform specific
#if defined(NIT_IOS) || defined(NIT_ANDROID)
	setCapable(DEVICE_MAIN_MEM_SHARES_FRAME);
	setCapable(DEVICE_MAIN_MEM_SHARES_TEX);
	setCapable(DEVICE_MAIN_MEM_SHARES_GEOMETRY);
#endif

#if defined(NIT_ANDROID)
	setCapable(DEVICE_POSSIBLE_LOST);
#endif

	// TODO: temporal
	if (!isCapable(TEXTURE_NPOT))
		g_Render->textureNeedPOT();

	if (!isCapable(RT_TEXTURE_NPOT))
		g_Render->renderTargetNeedPOT();
}
FluidHubAPIClient::WaresDetailsByID_t FluidHubAPIClient::getAvailableWaresWithDetails(openfluid::ware::WareType Type,
        const QString& Username) const
{
    WaresDetailsByID_t WaresDesc = std::map<openfluid::ware::WareID_t,WareDetailedDescription>();

    QString Path = wareTypeToString(Type);

    if (isConnected() && isCapable("wareshub") && !(Path.isEmpty()))
    {
        Path = "/wares/"+Path;

        if (!Username.isEmpty())
            Path += "?username="+Username;

        RESTClient::Reply Reply = m_RESTClient.getResource(Path);

        if (Reply.isOK())
        {
            rapidjson::Document JSONDoc;

            if (JSONDoc.Parse<0>(Reply.getContent().toStdString().c_str()).HasParseError())
                return WaresDesc;

            if (JSONDoc.IsObject())
                JSONObjectToDetailedWares(JSONDoc,WaresDesc);
        }
    }

    return WaresDesc;
}
QString FluidHubAPIClient::getNews(const QString& Lang) const
{
    QString Content;

    if (isConnected() && isCapable("news"))
    {
        QString Path = "/news";

        if (!Lang.isEmpty())
            Path += "?lang="+Lang;

        RESTClient::Reply Reply = m_RESTClient.getResource(Path);

        if (Reply.isOK())
            return Reply.getContent();
    }

    return "";
}
FluidHubAPIClient::WaresListByType_t FluidHubAPIClient::getAllAvailableWares() const
{
    WaresListByType_t WaresDesc;

    WaresDesc[openfluid::ware::WareType::SIMULATOR] = std::set<openfluid::ware::WareID_t>();
    WaresDesc[openfluid::ware::WareType::OBSERVER] = std::set<openfluid::ware::WareID_t>();
    WaresDesc[openfluid::ware::WareType::BUILDEREXT] = std::set<openfluid::ware::WareID_t>();

    if (isConnected() && isCapable("wareshub"))
    {
        RESTClient::Reply Reply = m_RESTClient.getResource("/wares");

        if (Reply.isOK())
        {
            rapidjson::Document JSONDoc;

            if (JSONDoc.Parse<0>(Reply.getContent().toStdString().c_str()).HasParseError())
                return WaresDesc;

            if (JSONDoc.IsObject())
            {
                for (rapidjson::Value::ConstMemberIterator it = JSONDoc.MemberBegin(); it != JSONDoc.MemberEnd(); ++it)
                {
                    QString Key = QString(it->name.GetString());

                    if (Key == "simulators")
                        JSONArrayToStringSet(it->value,WaresDesc[openfluid::ware::WareType::SIMULATOR]);
                    else if (Key == "observers")
                        JSONArrayToStringSet(it->value,WaresDesc[openfluid::ware::WareType::OBSERVER]);
                    else if (Key == "builderexts")
                        JSONArrayToStringSet(it->value,WaresDesc[openfluid::ware::WareType::BUILDEREXT]);
                }
            }
        }
    }

    return WaresDesc;
}