WorldWindJava 编译出错问题的解决

第一天 

  研究了好几天的worldwindjava,从网上下载的包放到工程里面,运行的时候就开始报错,一开始以为是没有联网的数据不能下载的问题,后来配置了本地数据后还是报同样的错误,错误是报各种方法无用,例glclientActive Texture not available。后来google了一下,有人说是分辨率要设置为32位color,但是由于我使用的虚拟机无法设置,咨询相关人士后,说我的机器目前的xp系统不支持3D编程,要换成win7就可以了,因为win7支持DirectX,最后还是换系统啦,希望这次能成功! !


第二天
    昨天换了win7系统后,仍然报错,虽然错误不同,但是已经明确指出是由于显卡不兼容的问题:javax.media.opengl.GLException: DXTn compressed textures not supported by this graphics card。这个问题在葡萄牙的一个介绍worldwindjava的网站上说是由于显卡不兼容或者是驱动程序的更新问题。同时,由于我目前使用的是虚拟机,可能也存在一个虚拟机是否支持3D问题,但是已经在虚拟系统启动后点开始----运行:输入Dxdiag中,调用DirectX诊断工具诊断过,确实开启了3D加速功能,而且主驱动也是支持3D,难道真的是驱动升级问题。目前正在继续研究。

第三天

      一直认为是虚拟机不支持3D编程,于是今天换了一个实体机,一切正常可以,终于看到了地球,非常激动。正准备开始编程了,高手突然告诉我虚拟机上的问题解决了,是由于虚拟机不支持采用DXT1-DXT5模式的影像数据渲染,只需要将图层中的dds格式图片换成jpg或者png格式的就可以显示了。于是我先找到了worldwindjava文件下的src->images文件夹,这里存放了worldwidjava用到的所有图片,我发现地球图片以及鹰眼等dds文件格式的图片,worldwindjava也对应提供了jpg和png格式,然后通过eclipse中的search工具找到了设置图片路径的具体位置,将dds改为了对应的其他格式,例如地球上的图片是在gov.nasa.worldwind.layers.Earth包中的BMNGOneImage.java中设置的,将该文件中的IMAGE_PATH变量的值由原来的“images/BMNG_world_topo.bathy.200405.3.2048*1024.dds”改成了“images/BMNG_world_topo.bathy.200405.3.2048*1024.jpg”,这里注意可能每个文件名不同,但我只是改了后面的扩展名,文件名没有变的。然后再运行,地球图片就出来了。按照同样的方法我修改了WorldMap和Compass的图片路径中的扩展名,这里需要注意的是修改后的图片路径必须在images文件夹中确实存在。再次运行,就没有再报错了,而且显示也都正常了。



由于这是第一次接触3d相关的编程,所以对于dds文件不是很熟悉,特意查了一下:

DDS是一种图片格式。DirectDraw Surface的缩写,它是DirectX纹理压缩(DirectX Texture Compression,简称DXTC)的产物。
格式介绍
  有3种DXTC的格式可供使用,分别是DXT1,DXT3和DXT5。
  DXT1 压缩比例:1:8 压缩比最高,它只有1Bit Alpha,Alpha通道信息几乎完全丧失。一般将不带Alpha通道的图片压缩成这种格式。如Worldwind 用的卫星图片。
  DXT3 压缩比例:1:4 使用了4Bit Alpha,可以有16个Alpha值,可很好地用于alpha通道锐利、对比强烈的半透和镂空材质。
  DXT5 压缩比例:1:4 使用了线形插值的4Bit Alpha,特别适合Alpha通道柔和的材质,比如高光掩码材质。
格式应用
  许多3D软件包括大部分游戏都用dds格式,又称“贴图”,许多fans通过修改dds文件可以生成特殊显示效果。nVidia提供了PhotoShop使用dds的插件,通过该插件也可以生成dds文件。

   现在终于明白了,“DXTn compressed textures not supported by this graphics card“的错误的意思,笼统的说,就是我的虚拟机显卡不支持DXT1-DXT5模式的压缩影像数据的渲染。所以只要是加载dds格式的图片都会报这个错误,并且显示不出来。

你可能感兴趣的:(wwj)