我有一个带alpha的PNG图像,我需要将其转换为BMP才能加载到我的OpenGL应用程序中。但是,BMP只有一个32位选项,即XRBG,其中'X'只是用于填充目的的额外字节(4字节对齐)。
问题是如何将这个'X'字节用于包含alpha通道,以便可以使用透明像素将BMP(32位XRGB)加载到GL应用程序中?
也许我必须制作自己的工具来进行此转换?我需要的是RGBA,而不是'XRGB'或'ARGB',我是否必须读取XRGB BMP文件并逐像素扫描才能转换为RGBA?
如果必须进行转换,这是VC ++中最好的方法吗? 任何可以制作透明BMP的软件?
答案 0 :(得分:11)
您可以使用PixelFormer。
如果您在 UpdateLayeredWindow()&上使用 ULW_ALPHA LoadImage(),该函数期望BMP文件需要 32位BGRA (使用预乘Alpha & Down-Top行顺序),除此之外,该功能无法正确显示位图。
您可以使用PixelFormer将PNG转换为BMP 32位BGRA(步骤2)。
答案 1 :(得分:8)
pixelformer说它可以做到http://www.qualibyte.com/pixelformer/#color_depths
答案 2 :(得分:5)
我曾经需要做同样的事情并写了一个小命令行工具,可以找到here。
答案 3 :(得分:0)
Opersource软件 - ImageMagic 或 Gimp 也可用于此图片转换。