private void drawTile(GL gl, Camera camera, MeshTile tile) {
    TileKey key = tile.getTileKey();

    ElevationMesh mesh = (ElevationMesh) this.cache.getObject(key);
    if (mesh == null && !this.cache.contains(key)) {
      BufferWrapperRaster raster = this.readTileRaster(tile);
      mesh = this.createMesh(tile, raster, this.verticalOffset, this.verticalScale);
      long size = (mesh != null) ? mesh.getSizeInBytes() : 1L;
      this.cache.add(key, mesh, size);
    }

    if (mesh != null) mesh.render(gl, camera);
  }