依照惯例,感谢@hankern
学习资源链接在https://blog.youkuaiyun.com/hankern/article/details/83933739
根据前面的内容,创建完插件了,加载了,现在就该解析了。很奇怪,家里的网很烂还是设置问题,太长了就没办法上传了,分几部分吧。
先定位到源码
看看类的定义和成员变量,大概就知道在干啥了
成员变量应该是支持协议,扩展和选项的集合。当然,里面还有其他类,暂时不写了。抄源码时抄过了,只写必要的。
跟下去,到doRead()了。
获取文件扩展名
判断扩展名小写是否为earth
查看文件名是否与网络相关
查看是否有"://",从而看是不是网络地址,这个是本地的.earth文件,返回false
本地查找.earth文件
本地文件查找肯定不包含网络地址
查看.earth文件是否绝对路径
如果是绝对路径且存在该文件,则返回文件名
uri及其成员变量
URIContext类及其成员变量
经过上面一系列的看不懂的运算,得到了cachekey
由于是本地路径,所以返回0,但是如果是网络路径,用到了osgEarth::Threading多线程