mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-08 20:49:53 -06:00
Do Time -> TileProvider mapping only once per frame
This commit is contained in:
@@ -132,6 +132,21 @@ namespace openspace {
|
||||
return _colorTextureProviders;
|
||||
}
|
||||
|
||||
void TileProviderManager::prerender() {
|
||||
for (auto it = _colorTextureProviders.begin(); it != _colorTextureProviders.end(); it++) {
|
||||
if (it->isActive) {
|
||||
it->tileProvider->prerender();
|
||||
}
|
||||
}
|
||||
|
||||
for (auto it = _heightMapProviders.begin(); it != _heightMapProviders.end(); it++){
|
||||
if (it->isActive) {
|
||||
it->tileProvider->prerender();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const std::vector<std::shared_ptr<TileProvider> >
|
||||
TileProviderManager::getActiveHeightMapProviders()
|
||||
{
|
||||
|
||||
@@ -59,6 +59,8 @@ namespace openspace {
|
||||
std::vector<TileProviderWithName>& heightMapProviders();
|
||||
std::vector<TileProviderWithName>& colorTextureProviders();
|
||||
|
||||
void prerender();
|
||||
|
||||
private:
|
||||
static void initTexures(std::vector<TileProviderWithName>& destination,
|
||||
const ghoul::Dictionary& dict, const TileProviderInitData& initData);
|
||||
|
||||
@@ -93,15 +93,26 @@ namespace openspace {
|
||||
}
|
||||
|
||||
Tile TemporalTileProvider::getHighestResolutionTile(ChunkIndex chunkIndex, int parents) {
|
||||
return getTileProvider()->getHighestResolutionTile(chunkIndex, parents);
|
||||
if (_currentTileProvider == nullptr) {
|
||||
LDEBUG("Warning: had to call prerender from getHighestResolutionTile()");
|
||||
prerender();
|
||||
}
|
||||
|
||||
return _currentTileProvider->getHighestResolutionTile(chunkIndex, parents);
|
||||
}
|
||||
|
||||
TileDepthTransform TemporalTileProvider::depthTransform() {
|
||||
return getTileProvider()->depthTransform();
|
||||
if (_currentTileProvider == nullptr) {
|
||||
LDEBUG("Warning: had to call prerender from depthTransform()");
|
||||
prerender();
|
||||
}
|
||||
|
||||
return _currentTileProvider->depthTransform();
|
||||
}
|
||||
|
||||
void TemporalTileProvider::prerender() {
|
||||
return getTileProvider()->prerender();
|
||||
_currentTileProvider = getTileProvider();
|
||||
_currentTileProvider->prerender();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -153,6 +153,8 @@ namespace openspace {
|
||||
std::unordered_map<TimeKey, std::shared_ptr<CachingTileProvider> > _tileProviderMap;
|
||||
TileProviderInitData _tileProviderInitData;
|
||||
|
||||
std::shared_ptr<TileProvider> _currentTileProvider;
|
||||
|
||||
TimeFormat * _timeFormat;
|
||||
TimeQuantizer _timeQuantizer;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user