您的位置:首页 > 其它

osg纹理贴图失败之DDS格式详解

2013-11-01 15:12 489 查看
最近在研究平台三维场景渲染中存在的问题,发现某些建筑物顶面的纹理在不同的观察距离会出现不同的显示,比如离的比较远,则会出现黑面、彩面、等,总之不是纹理贴图所应该有的纹理。

平台加载的三维模型都是ive格式,无法查找具体原因,先利用osg自带的osgconv工具将ive转化为osg文件,以便查看顶点、面元、法线、纹理等如何组织,也可以将纹理从ive中释放为单个影像文件。

释放后,检查osg文件,发现渲染状态stateset不存在问题,那应该就是纹理的问题。释放的纹理为dds格式,查看工具我选择的是ps的插件。发现dds的mipmap在生成小范围纹理时出错。但是我利用烘焙后的tga在ps中直接导出dds时mipmap却不存在问题,那应该就是模型分解简化时纹理压缩存在的问题。

下面是摘自网上的关于dds的解释,保留方便以后查看。

DDS是DirectDraw Surface的缩写,它是DirectX纹理压缩(DirectX Texture Compression,简称DXTC)的产物。 DXTC减少了纹理内存消耗的50%甚至更多,有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文件。 还有一种生成dds文件的方法是使用nVidia提供的命令行工具nvdxt.exe

DDS 支持各种输出格式,具体情况取决于分配给红、绿和蓝 (RGB) 通道、可选 alpha 通道(透明度)和可能未使用位数的像素数量。这也是一组压缩格式。

A8 R8 G8 B8—每像素 32 位: 对于 RGB 和 alpha 通道,每像素 8 位。

A1 R5 G5 B5—每像素 16 位: 对于 RGB ǖ溃 肯袼?5 位,alpha 通道,每像素 1 位。

A4 R4 G4 B4—每像素 16 位: 对于 RGB 和 alpha 通道,每像素 4 位。

R8 G8 B8—每像素 24 位: 对于 RGB 通道,每像素 8 位;无 alpha。

R5 G6 B5—每像素 16 位: 对于 R 和 B 通道,每像素 5 位,对于 G 通道,每像素 6 位;无 alpha。

A2 R10 G10 B10—每像素 32 位: 对于 RGB 通道,每像素 10 位;alpha 通道,每像素 2 位。

X8 R8 G8 B8—每像素 32 位: 对于 RGB 通道,每像素 8 位;8 位未使用;无 alpha。

X1 R5 G5 B5—每像素 16 位: 对于 RGB 通道,每像素 5 位;1 位未使用;无 alpha。

R3 G3 B2—每像素 8 位: 对于 R 和 G 通道,每像素 3 位,对于 B 通道,每像素 2 位;无 alpha。

A8 R3 G3 B2—每像素 16 位: 对于 R 和 G 通道,每像素 3 位,对于 B 通道,每像素 2 位;对于 alpha 通道,每像素 8 位。

X4 R4 G4 B4—每像素 16 位: 对于 RGB 通道和 4 个未使用位,每像素 4 位。

A16 B16 G16 R16—每像素 64 位: 对于 RGB 和 alpha 通道,每像素 16 位。

DXT1—带有 1 位 alpha 的压缩格式。

DXT2—带有 4 位预乘 alpha 的压缩格式。

DXT3—带有 4 位 alpha 的压缩格式,无预乘。

DXT4—带有插补预乘 Alpha 的压缩格式。

DXT5—带有插补 Alpha 的压缩格式,但是无预乘。

生成 Mipmap—启用该选项之后,将生成该图像的 mipmap。默认设置为禁用状态。

Mipmap 是一组较低细节的位图。第一个是原始图像大小的一半,下一个是该图像的一半,依次类推,直到单个像素。(可以将它们的排列方式视为四棱锥。)当未以完全大小显示纹理时,它们既可用于优化显示时间,也可以减少锯齿。例如,如果原始 DDS 图像是 512 x 512 像素,但是其显示的区域只是 100 像素的方形,则显示设备将在 128 x 128 mipmap 和 64 x 64 mipmap 之间插补。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: