Class TextureTile
- java.lang.Object
-
- gov.nasa.worldwind.util.Tile
-
- gov.nasa.worldwind.layers.TextureTile
-
- All Implemented Interfaces:
Cacheable
,SurfaceTile
,java.lang.Comparable<Tile>
- Direct Known Subclasses:
MercatorTextureTile
,SurfaceObjectTileBuilder.SurfaceObjectTile
,WMSTiledImageLayer.ComposeImageTile
public class TextureTile extends Tile implements SurfaceTile
This class manages the conversion and timing of image data to a JOGL Texture, and provides an interface for binding the texture and applying any texture transforms to align the texture and texture coordinates.
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
hasMipmapData
protected java.util.concurrent.atomic.AtomicLong
updateTime
-
Constructor Summary
Constructors Constructor Description TextureTile(Sector sector)
TextureTile(Sector sector, Level level, int row, int col)
TextureTile(Sector sector, Level level, int row, int column, java.lang.String cacheName)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
applyInternalTransform(DrawContext dc, boolean textureIdentityActive)
protected void
applyResourceTextureTransform(DrawContext dc)
boolean
bind(DrawContext dc)
protected TextureTile
createSubTile(Sector sector, Level level, int row, int col)
protected TileKey
createSubTileKey(Level level, int row, int col)
Returns a key for a sub tile of this texture tile with the specifiedLevel
, row, and column.TextureTile[]
createSubTiles(Level nextLevel)
Splits this texture tile into four tiles; one for each sub quadrant of this texture tile.boolean
equals(java.lang.Object o)
Vec4
getCentroidPoint(Globe globe)
java.util.List<? extends LatLon>
getCorners()
Extent
getExtent(DrawContext dc)
TextureTile
getFallbackTile()
static MemoryCache
getMemoryCache()
Returns the memory cache used to cache tiles for this class and its subclasses, initializing the cache if it doesn't yet exist.long
getSizeInBytes()
Retrieves the approximate size of this object in bytes.com.jogamp.opengl.util.texture.Texture
getTexture(GpuResourceCache tc)
com.jogamp.opengl.util.texture.TextureData
getTextureData()
Returns the texture data most recently specified for the tile.protected TextureTile
getTileFromMemoryCache(TileKey tileKey)
long
getUpdateTime()
int
hashCode()
protected com.jogamp.opengl.util.texture.Texture
initializeTexture(DrawContext dc)
boolean
isTextureExpired()
boolean
isTextureExpired(long expiryTime)
boolean
isTextureInMemory(GpuResourceCache tc)
void
setFallbackTile(TextureTile fallbackTile)
void
setTexture(GpuResourceCache tc, com.jogamp.opengl.util.texture.Texture texture)
void
setTextureData(com.jogamp.opengl.util.texture.TextureData textureData)
Specifies new texture data for the tile.protected void
setTextureParameters(DrawContext dc, com.jogamp.opengl.util.texture.Texture t)
java.lang.String
toString()
protected void
updateMemoryCache()
-
Methods inherited from class gov.nasa.worldwind.util.Tile
compareTo, computeColumn, computeColumnLongitude, computeRow, computeRowLatitude, getCacheName, getColumn, getFormatSuffix, getHeight, getLabel, getLevel, getLevelName, getLevelNumber, getPath, getPathBase, getPriority, getResourceURL, getResourceURL, getRow, getSector, getTileKey, getWidth, setPriority
-
Methods inherited from interface gov.nasa.worldwind.render.SurfaceTile
getSector
-
-
-
-
Method Detail
-
getMemoryCache
public static MemoryCache getMemoryCache()
Returns the memory cache used to cache tiles for this class and its subclasses, initializing the cache if it doesn't yet exist.- Returns:
- the memory cache associated with the tile.
-
getSizeInBytes
public long getSizeInBytes()
Description copied from interface:Cacheable
Retrieves the approximate size of this object in bytes. Implementors are encouraged to calculate the exact size for smaller objects, but use approximate values for objects that include such large components that the approximation would produce an error so small that the extra computation would be wasteful.- Specified by:
getSizeInBytes
in interfaceCacheable
- Overrides:
getSizeInBytes
in classTile
- Returns:
- this
Cacheable
object's size in bytes
-
getCorners
public java.util.List<? extends LatLon> getCorners()
- Specified by:
getCorners
in interfaceSurfaceTile
-
getFallbackTile
public TextureTile getFallbackTile()
-
setFallbackTile
public void setFallbackTile(TextureTile fallbackTile)
-
getTextureData
public com.jogamp.opengl.util.texture.TextureData getTextureData()
Returns the texture data most recently specified for the tile. New texture data is typically specified when a new image is read, either initially or in response to image expiration.If texture data is non-null, a new texture is created from the texture data when the tile is next bound or otherwise initialized. The texture data field is then set to null. Subsequently setting texture data to be non-null causes a new texture to be created when the tile is next bound or initialized.
- Returns:
- the texture data, which may be null.
-
setTextureData
public void setTextureData(com.jogamp.opengl.util.texture.TextureData textureData)
Specifies new texture data for the tile. New texture data is typically specified when a new image is read, either initially or in response to image expiration.If texture data is non-null, a new texture is created from the texture data when the tile is next bound or otherwise initialized. The texture data field is then set to null. Subsequently setting texture data to be non-null causes a new texture to be created when the tile is next bound or initialized.
When a texture is created from the texture data, the texture data field is set to null to indicate that the data has been converted to a texture and its resources may be released.
- Parameters:
textureData
- the texture data, which may be null.
-
getTexture
public com.jogamp.opengl.util.texture.Texture getTexture(GpuResourceCache tc)
-
isTextureInMemory
public boolean isTextureInMemory(GpuResourceCache tc)
-
getUpdateTime
public long getUpdateTime()
-
isTextureExpired
public boolean isTextureExpired()
-
isTextureExpired
public boolean isTextureExpired(long expiryTime)
-
setTexture
public void setTexture(GpuResourceCache tc, com.jogamp.opengl.util.texture.Texture texture)
-
getExtent
public Extent getExtent(DrawContext dc)
- Specified by:
getExtent
in interfaceSurfaceTile
-
createSubTiles
public TextureTile[] createSubTiles(Level nextLevel)
Splits this texture tile into four tiles; one for each sub quadrant of this texture tile. This attempts to retrieve each sub tile from the texture tile cache. This callscreateSubTile(gov.nasa.worldwind.geom.Sector, gov.nasa.worldwind.util.Level, int, int)
to create sub tiles not found in the cache.- Parameters:
nextLevel
- the level for the sub tiles.- Returns:
- a four-element array containing this texture tile's sub tiles.
- Throws:
java.lang.IllegalArgumentException
- if the level is null.
-
createSubTile
protected TextureTile createSubTile(Sector sector, Level level, int row, int col)
Creates a sub tile of this texture tile with the specifiedSector
,Level
, row, and column. This is called bycreateSubTiles(gov.nasa.worldwind.util.Level)
, to construct a sub tile for each quadrant of this tile. Subclasses must override this method to return an instance of the derived version.- Parameters:
sector
- the sub tile's sector.level
- the sub tile's level.row
- the sub tile's row.col
- the sub tile's column.- Returns:
- a sub tile of this texture tile.
-
createSubTileKey
protected TileKey createSubTileKey(Level level, int row, int col)
Returns a key for a sub tile of this texture tile with the specifiedLevel
, row, and column. This is called bycreateSubTiles(gov.nasa.worldwind.util.Level)
, to create a sub tile key for each quadrant of this tile.- Parameters:
level
- the sub tile's level.row
- the sub tile's row.col
- the sub tile's column.- Returns:
- a sub tile of this texture tile.
-
getTileFromMemoryCache
protected TextureTile getTileFromMemoryCache(TileKey tileKey)
-
updateMemoryCache
protected void updateMemoryCache()
-
initializeTexture
protected com.jogamp.opengl.util.texture.Texture initializeTexture(DrawContext dc)
-
setTextureParameters
protected void setTextureParameters(DrawContext dc, com.jogamp.opengl.util.texture.Texture t)
-
bind
public boolean bind(DrawContext dc)
- Specified by:
bind
in interfaceSurfaceTile
-
applyInternalTransform
public void applyInternalTransform(DrawContext dc, boolean textureIdentityActive)
- Specified by:
applyInternalTransform
in interfaceSurfaceTile
-
applyResourceTextureTransform
protected void applyResourceTextureTransform(DrawContext dc)
-
-