【发布时间】:2025-12-02 10:35:01
【问题描述】:
我正在开发一款游戏,我的所有图形都使用洋红色作为透明/魔法颜色。 它们都是 32 位的,洋红色只是为了方便。 无论如何,如果有人能建议我应该使用什么库来加载我的图像,我将不胜感激(我需要以 GL_RGBA 格式加载它们,包括内部和纹理特定的)。
【问题讨论】:
标签: opengl png 32-bit textures
我正在开发一款游戏,我的所有图形都使用洋红色作为透明/魔法颜色。 它们都是 32 位的,洋红色只是为了方便。 无论如何,如果有人能建议我应该使用什么库来加载我的图像,我将不胜感激(我需要以 GL_RGBA 格式加载它们,包括内部和纹理特定的)。
【问题讨论】:
标签: opengl png 32-bit textures
如果只需要 PNG 支持,请使用 libpng。 DevIL 应该很简单,但它有点臃肿(不仅仅是加载图像),并且在内部实际上调用了 OpenGL 函数,这可能会弄乱你自己的 OpenGL 逻辑。
我个人更喜欢 SDL_image,因为无论如何我都在我的项目中使用 SDL。虽然不是很明显,但 SDL_BlitSurface() 函数可以将 IMG_Load() 返回的任何内容转换为必要的像素格式。
【讨论】:
DevIL 可以加载几乎所有文件格式,并且可以直接创建 OpenGL 纹理。这是最简单的方法。
您还应该使用支持 Alpha 通道的文件格式(PNG、TGA、...)。在 32 位图像中使用“魔法颜色”确实过时了!
【讨论】:
除了提到 SDL 和 DevIL 的其他答案外,还有两个选项需要考虑:
【讨论】:
这里有一个非常简单的将 png 加载到 openGL 的文件示例:
【讨论】:
另一个选项是 OpenCV。
它不仅可以加载纹理,而且还可以使用它的其他功能。
【讨论】: