将PNG纹理加载到OpenGL

时间:2010-04-18 18:29:06

标签: opengl png 32-bit textures

我正在制作一款游戏,我的所有图片都使用洋红色作为透明/魔幻色彩。 它们都是32位,洋红色只是为了方便。 无论如何,如果有人可以建议我使用什么库来加载我的图像(我需要以GL_RGBA格式加载它们,内部和纹理特定),我将不胜感激。

5 个答案:

答案 0 :(得分:6)

如果只需要PNG支持,请使用libpng。 DevIL应该很简单,但它有点臃肿(除了加载图像之外还有很多)并且内部实际上调用了OpenGL函数,这些函数可能会破坏你自己的OpenGL逻辑。

我个人更喜欢SDL_image,因为无论如何我在我的项目中使用SDL。虽然不是很明显,但SDL_BlitSurface()函数可以从IMG_Load()返回到必要的像素格式进行转换。

答案 1 :(得分:5)

DevIL几乎可以加载每种文件格式,并且可以直接创建OpenGL纹理。这是最简单的方法。

您还应该使用支持Alpha通道的文件格式(PNG,TGA,...)。在32位图像中使用“魔幻色彩”真的​​过时了!

答案 2 :(得分:1)

除了提及SDL和DevIL的其他答案之外,还有两个选项需要考虑:

  • 直接使用libpng。如果重要的话,这可能会对代码大小产生最小的影响,因为对于其他未使用的格式,没有DLL等等,你不会感到臃肿。
  • 使用操作系统纹理加载。如果您更喜欢在外部库上使用OS功能,这可能是减少依赖关系的好方法。 Windows XP及更高版本中的GDI +具有内置纹理加载功能,适用于PNG和JPEG等少数格式,我不确定,但其他操作系统可能具有相似的功能。将GDI +挂接到OpenGL非常简单,然后操作系统正在处理纹理加载!

答案 3 :(得分:1)

这里有一个非常极简的文件示例,将png加载到openGL中:

http://tfc.duke.free.fr/coding/src/png.c

答案 4 :(得分:0)

另一个选择是OpenCV。

它不仅仅是纹理加载,但是很有可能你也可以使用它的其他功能。