如何使用libpng生成RGBA4444纹理数据,并将其用于opengl?

时间:2015-03-18 10:00:52

标签: android opengl-es libpng rgba

我正在开发一款Android游戏,现在我的图片文件都是" rgba8888" png文件,我目前的工作流程是使用libpng来分析这些图片文件为" rgba8888"格式化为一大块数据,然后为opengl生成RGBA8888纹理(通过glTexImage2D函数),

现在我想使用RGBA4444颜色格式来降低内存成本,我的问题是:

  1. 如何将我的rgba8888 png文件转换为rgba4444格式?(我原本以为PS中的一个简单的导出选项会做,但是否定)

  2. libpng是否支持rgba4444格式?我如何分析它?如果没有,我该怎么办?

1 个答案:

答案 0 :(得分:1)

Libpng不支持RGBA4444。但它确实支持用户转换,因此应该可以编写用户回调函数,将RGBA8888像素转换为RGBA4444像素,并将其返回到您的应用程序。

搜索文件" libpng_manual.txt"与libpng一起发布的" user_transform_fn"。有关工作用户转换函数的示例,请查看pngcrush的源代码,搜索" pngcrush_transform_pixels_fn"。