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; }