【引子】
osgEarth::ElevationQuery类用于查询高程,自测效率比较低(大概每个点需要四五十毫秒),成员函数setMaxTilesToCache(int),之前看说明仍然不是很确认其具体的意义,想尝试设置是否能加速下。
看之前的参数设置为10,网上搜索中文资料不多,搜到几个参数也是10,还有的备注为"最大查询LOD级别",英文函数头中的解释为“Sets the maximum cache size for elevation tiles.”,看起来是缓存相关的,到时是缓存地图的级别还是缓存的数量? 经过查看ElevationQuery.cpp以及官网的更详细的说明,发线并不是说明LOD级别或瓦片级别,而是缓存的查询高程的点的个数。
【真相】
setMaxTilesToCache(int)设置的就是查询点的缓存个数,且缓存的结构为osgEarth::LRUCache。在OsgEarth 2.1.1中,默认数量为50;在OsgEarth 2.7中,默认值为500。
【但是】
尽管不喜欢“但是”,但是实际测试发现,通过setMaxTilesToCache设置了缓存也没有什么用,相同的数据立马再查询一遍好像耗时没有什么变化!或者理解还不够,看ElevationQuery的sync函数会自动判断要不要清除缓存,目前还不知道怎么让它不用清除缓存!