将PNG纹理加载到OpenGL

5 opengl png textures 32-bit

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

小智 6

如果只需要PNG支持,请使用libpng.DevIL应该很容易,但它有点臃肿(不仅仅是加载图像),而且内部实际上调用的OpenGL函数可能会破坏你自己的OpenGL逻辑.

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


Dan*_*vil 5

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

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


Ash*_*ain 1

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

  • 直接使用libpng。如果重要的话,这对代码大小的影响可能最小,因为您不使用的其他格式不会出现膨胀,没有 DLL 等。
  • 使用操作系统纹理加载。如果您更喜欢使用操作系统功能而不是外部库,那么这可能是减少依赖性的好方法。Windows XP 及更高版本中的 GDI+ 具有针对 PNG 和 JPEG 等几种格式的内置纹理加载,我不确定,但其他操作系统可能具有类似的功能。将 GDI+ 连接到 OpenGL 非常简单,然后操作系统就会负责纹理加载!