jon*_*ham 13 alpha file bitmap bmp
我有一个带alpha的PNG图像,我需要将其转换为BMP才能加载到我的OpenGL应用程序中.但是,BMP只有一个32位选项,即XRBG,其中'X'只是用于填充目的的额外字节(4字节对齐).
问题是如何利用这个'X'字节包含alpha通道,以便BMP(32位XRGB)可以加载到具有透明像素的GL应用程序?
也许我必须使用自己的工具来进行此转换?我需要的是RGBA,而不是'XRGB'或'ARGB',我是否必须读取XRGB BMP文件并逐像素扫描才能转换为RGBA?
如果必须进行转换,那么VC++中最好的方法是什么?任何可以制作透明BMP的软件?
dns*_*dns 13
你可以使用PixelFormer.
如果在UpdateLayeredWindow()和LoadImage()上使用ULW_ALPHA,则该函数需要BMP文件需要是32位BGRA (具有预乘Alpha和Down-Top行顺序),而不是该函数不能正确显示位图.
您可以使用PixelFormer将PNG转换为BMP 32位BGRA(步骤2).
PS:
当使用alpha通道导出bmp时,Photoshop已经破坏了支持(它不能做预乘alpha,alpha通道值将变为0).您将丢失Alpha通道,但BGR值将正确加载.您仍然可以使用Photoshop但必须在Alpha通道选项卡上手动绘制alpha.
当您导出为bmp时,Gimp也会破坏支持.LoadImage()不会加载任何内容,也无法看到图像.我怀疑这个问题是由Gimp导出BMP作为自上而下的行顺序引起的.
Visual Studio资源编辑器还可以选择创建/编辑32bpp BGR,但不支持alpha通道
归档时间: |
|
查看次数: |
20702 次 |
最近记录: |