У меня есть та же проблема, как описано здесь.
Я ищу поддержку структур DXTn. Я работал worldwind
в терминале и получил следующее сообщение об ошибке:
Aug 22, 2012 5:28:12 PM gov.nasa.worldwind.layers.TextureTile initializeTexture
SEVERE: Exception attempting to read texture file
javax.media.opengl.GLException: DXTn compressed textures not supported by this graphics card
Я попробовал предложенное решение отсюда
sudo apt-get install driconf
driconf
Под изменением "Качества изображения" "Включают S3TC..." к Да.Сохранить.
driconf
решение не решило проблему. На вкладке Image Quality не было никакой опции "Enable S3TC...".
Я думаю, что использую драйвер Nouveau и интересно, должен ли я переключиться на драйвер Nvidia?
Какие-либо идеи?
Взгляните: http://en.wikipedia.org/wiki/S3_Texture_Compression
, В то время как S3 Graphics больше не является конкурентом на рынке графического акселератора, лицензионные сборы все еще наложены и собраны для использования технологии S3TC, например, в игровых приставках и видеокартах. Обремененное патентом состояние S3TC и его широкого использования в программном обеспечении, несмотря на необремененные альтернативы, привело к фактическому требованию для драйверов OpenGL для поддержки, это и представляет главное препятствие реализациям с открытым исходным кодом .
, Который объясняет, почему драйвер Nouveau не поддерживает его. Я предполагаю, что необходимо переключиться на двоичные драйверы Nvidia.
Иначе:
.. и скажите WorldWind
для не использования S3 текстурируют сжатие (.dds
формат), а скорее формат текстур значения по умолчанию PNG.
Можно загрузить источники (SDK 2.0 теперь):
wget http://builds.worldwind.arc.nasa.gov/worldwind-releases/2.0/builds/worldwind-2.0.0.zip
unzip worldwind-2.0.0.zip -d worldwind-2.0.0
Затем примените изменения в исходных файлах, перечисленных здесь и здесь.
Так как те ссылки немного устарели, существует еще несколько изменений, которые необходимо применить, чтобы заставить вещи работать над выпуском WW 2.0 (см. приложение).
Впоследствии, можно восстановить новое worldwind.jar
:
cd worldwind-2.0.0/
ant worldwind.jarfile # or simply `ant'
Я лично проверил его путем выполнения SDK от Netbeans.
$ sudo lshw -C video | egrep "product|driver"
product: RV635/M86 [Mobility Radeon HD 3670]
configuration: driver=radeon latency=0
HTH
diff --git a/src/config/Earth/BMNGWMSLayer.xml b/src/config/Earth/BMNGWMSLayer.xml
--- a/src/config/Earth/BMNGWMSLayer.xml
+++ b/src/config/Earth/BMNGWMSLayer.xml
@@ -19,12 +19,12 @@
<!-- day month year hours:minutes:seconds timezone -->
<LastUpdate>26 03 2009 00:00:00 GMT</LastUpdate>
<DataCacheName>Earth/BMNGWMS/BMNG(Shaded + Bathymetry) Tiled - Version 1.1 - 5.2004</DataCacheName>
- <ImageFormat>image/dds</ImageFormat>
+ <ImageFormat>image/png</ImageFormat>
<AvailableImageFormats>
<ImageFormat>image/png</ImageFormat>
<ImageFormat>image/dds</ImageFormat>
</AvailableImageFormats>
- <FormatSuffix>.dds</FormatSuffix>
+ <FormatSuffix>.png</FormatSuffix>
<NumLevels count="5" numEmpty="0"/>
<TileOrigin>
<LatLon units="degrees" latitude="-90" longitude="-180"/>
diff --git a/src/config/Earth/BMNGWMSLayer2.xml b/src/config/Earth/BMNGWMSLayer2.xml
--- a/src/config/Earth/BMNGWMSLayer2.xml
+++ b/src/config/Earth/BMNGWMSLayer2.xml
@@ -22,7 +22,7 @@
<ImageFormat>image/jpeg</ImageFormat>
<ImageFormat>image/png</ImageFormat>
</AvailableImageFormats>
- <FormatSuffix>.dds</FormatSuffix>
+ <FormatSuffix>.png</FormatSuffix>
<NumLevels count="5" numEmpty="0"/>
<TileOrigin>
<LatLon units="degrees" latitude="-90" longitude="-180"/>
diff --git a/src/config/Earth/CountryBoundariesLayer.xml b/src/config/Earth/CountryBoundariesLayer.xml
--- a/src/config/Earth/CountryBoundariesLayer.xml
+++ b/src/config/Earth/CountryBoundariesLayer.xml
@@ -21,7 +21,7 @@
<AvailableImageFormats>
diff --git a/src/config/Earth/MSVirtualEarthHybridLayer.xml b/src/config/Earth/MSVirtualEarthHybridLayer.xml
--- a/src/config/Earth/MSVirtualEarthHybridLayer.xml
+++ b/src/config/Earth/MSVirtualEarthHybridLayer.xml
@@ -19,7 +19,7 @@
<AvailableImageFormats>
<ImageFormat>image/jpg</ImageFormat>
</AvailableImageFormats>
- <FormatSuffix>.dds</FormatSuffix>
+ <FormatSuffix>.jpg</FormatSuffix>
<NumLevels count="16" numEmpty="4"/>
<TileOrigin>
<LatLon units="degrees" latitude="-90" longitude="-180"/>
@@ -40,4 +40,4 @@
</Sector>
<ActiveAltitudes max="1000e3"/>
<UseTransparentTextures>true</UseTransparentTextures>
diff --git a/src/config/Earth/MSVirtualEarthRoadsLayer.xml b/src/config/Earth/MSVirtualEarthRoadsLayer.xml
--- a/src/config/Earth/MSVirtualEarthRoadsLayer.xml
+++ b/src/config/Earth/MSVirtualEarthRoadsLayer.xml
@@ -19,7 +19,7 @@
<AvailableImageFormats>
<ImageFormat>image/jpg</ImageFormat>
</AvailableImageFormats>
- <FormatSuffix>.dds</FormatSuffix>
+ <FormatSuffix>.jpg</FormatSuffix>
<NumLevels count="16" numEmpty="4"/>
<TileOrigin>
<LatLon units="degrees" latitude="-90" longitude="-180"/>
@@ -40,4 +40,4 @@
</Sector>
<ActiveAltitudes max="1000e3"/>
<UseTransparentTextures>true</UseTransparentTextures>
diff --git a/src/config/Earth/ScankortDenmarkImageLayer.xml b/src/config/Earth/ScankortDenmarkImageLayer.xml
--- a/src/config/Earth/ScankortDenmarkImageLayer.xml
+++ b/src/config/Earth/ScankortDenmarkImageLayer.xml
@@ -16,12 +16,12 @@
<!-- day month year hours:minutes:seconds timezone -->
<LastUpdate>25 06 2009 22:45:32 GMT</LastUpdate>
<DataCacheName>Earth/Scankort Denmark</DataCacheName>
- <ImageFormat>image/dds</ImageFormat>
+ <ImageFormat>image/png</ImageFormat>
<AvailableImageFormats>
<ImageFormat>image/png</ImageFormat>
<ImageFormat>image/dds</ImageFormat>
</AvailableImageFormats>
- <FormatSuffix>.dds</FormatSuffix>
+ <FormatSuffix>.png</FormatSuffix>
<NumLevels count="16" numEmpty="0"/>
<TileOrigin>
<LatLon units="degrees" latitude="-90" longitude="-180"/>
@@ -46,4 +46,4 @@
<Time units="milliseconds" value="30000"/>
</ReadTimeout>
</RetrievalTimeouts>
diff --git a/src/config/Earth/USDANAIPWMSImageLayer.xml b/src/config/Earth/USDANAIPWMSImageLayer.xml
--- a/src/config/Earth/USDANAIPWMSImageLayer.xml
+++ b/src/config/Earth/USDANAIPWMSImageLayer.xml
@@ -17,12 +17,12 @@
<!-- day month year hours:minutes:seconds timezone -->
<LastUpdate>23 04 2009 17:55:00 GMT</LastUpdate>
<DataCacheName>Earth/USDA NAIP</DataCacheName>
- <ImageFormat>image/dds</ImageFormat>
+ <ImageFormat>image/png</ImageFormat>
<AvailableImageFormats>
<ImageFormat>image/png</ImageFormat>
<ImageFormat>image/dds</ImageFormat>
</AvailableImageFormats>
- <FormatSuffix>.dds</FormatSuffix>
+ <FormatSuffix>.png</FormatSuffix>
<NumLevels count="15" numEmpty="6"/>
<TileOrigin>
<LatLon units="degrees" latitude="-90" longitude="-180"/>
@@ -51,4 +51,4 @@
<Time units="milliseconds" value="30000"/>
</ReadTimeout>
</RetrievalTimeouts>
diff --git a/src/gov/nasa/worldwind/layers/BasicTiledImageLayer.java b/src/gov/nasa/worldwind/layers/BasicTiledImageLayer.java
--- a/src/gov/nasa/worldwind/layers/BasicTiledImageLayer.java
+++ b/src/gov/nasa/worldwind/layers/BasicTiledImageLayer.java
@@ -190,7 +190,7 @@ public class BasicTiledImageLayer extends TiledImageLayer implements BulkRetriev
params.setValue(AVKey.TILE_HEIGHT, 512);
if (params.getValue(AVKey.FORMAT_SUFFIX) == null)
- params.setValue(AVKey.FORMAT_SUFFIX, ".dds");
+ params.setValue(AVKey.FORMAT_SUFFIX, ".png");
if (params.getValue(AVKey.NUM_LEVELS) == null)
params.setValue(AVKey.NUM_LEVELS, 19); // approximately 0.1 meters per pixel
diff --git a/src/gov/nasa/worldwind/layers/rpf/RPFTiledImageLayer.java b/src/gov/nasa/worldwind/layers/rpf/RPFTiledImageLayer.java
--- a/src/gov/nasa/worldwind/layers/rpf/RPFTiledImageLayer.java
+++ b/src/gov/nasa/worldwind/layers/rpf/RPFTiledImageLayer.java
@@ -265,7 +265,7 @@ public class RPFTiledImageLayer extends TiledImageLayer
if (params.getValue(AVKey.TILE_HEIGHT) == null)
params.setValue(AVKey.TILE_HEIGHT, 512);
if (params.getValue(AVKey.FORMAT_SUFFIX) == null)
- params.setValue(AVKey.FORMAT_SUFFIX, ".dds");
+ params.setValue(AVKey.FORMAT_SUFFIX, ".png");
if (params.getValue(AVKey.NUM_LEVELS) == null)
params.setValue(AVKey.NUM_LEVELS, 14); // approximately 0.5 meters per pixel
if (params.getValue(AVKey.NUM_EMPTY_LEVELS) == null)
После того, как модель WorldWind создается, и прежде чем окно будет отображено, можно циклично выполниться через все слои и вынудить их не использовать DDS для хранения структур мозаики:
// Before the WorldWind window displays (which triggers the data retrievers)
// loop through the levels for each tiled image layer and mutate any level
// constructed to use DDS to instead use JPG (best compression) or PNG (best
// quality, but much larger files).
String cacheFormat = "jpg"; // could load this via configuration file
for (Layer layer : model.getLayers()) {
if (layer instanceof BasicTiledImageLayer && ((BasicTiledImageLayer)layer).getTextureFormat() == null) {
((BasicTiledImageLayer)layer).setTextureFormat("image/" + cacheFormat);
((BasicTiledImageLayer)layer).setValue(AVKey.FORMAT_SUFFIX, "." + cacheFormat);
ArrayList<Level> levels = ((BasicTiledImageLayer) layer).getLevels().getLevels();
for (int i = 0; i < levels.size(); i++) {
Level level = levels.get(i);
if (level.getFormatSuffix().equals(".dds")) {
AVList params = level.getParams();
params.setValue(AVKey.FORMAT_SUFFIX, "." + cacheFormat);
levels.set(i, new Level(params));
}
}
}
}