调试bug核心在于定位问题,解决问题。
在解决osgb转3dTiles程序的bug调试过程中遇到的问题:
1.有的软件导出的纹理是经过了压缩的,可以通过如下语句获取纹理osg::image img的压缩格式。
(发现过程比较曲折,同事用osg源码一层一层编译调试才发现的这个存储了压缩格式的变量,坑太多还要多学多看啊。)
GLint internalFormat = img->getInternalTextureFormat();
//internalFormat可能的值有很多,博主遇到的主要是下面这种
#ifndef GL_EXT_texture_compression_s3tc
#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
#endif
//还有一些未经压缩的纹理,internalFormat的值一般为
#define GL_RGB 0x1907//三波段纹理
#define GL_RGBA 0x1908//四波段纹理