Do Time -> TileProvider mapping only once per frame

This commit is contained in:
Erik Broberg
2016-06-06 14:25:37 -04:00
parent c95363a732
commit db9923dc05
4 changed files with 33 additions and 3 deletions

View File

@@ -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()
{

View File

@@ -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);

View File

@@ -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();
}

View File

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