SDL由于各种原因而崩溃,而DevIL出现了一些奇怪的问题,即使我包括IL/ilut.h并链接所有内容,并包括其他头文件,它也没有定义我需要加载图像到OpenGL纹理中的函数(关于USE_OPEN_GL未被定义的问题)。 我想知道是否有其他库可以将位图或png加载到我可以轻松转换为OpenGL的格式中,或者解决Devil的问题。
谢谢
libpng和libjpeg在构建和使用方面可能会相当令人生畏,难怪有各种包装库。
如果您只想加载一些图像文件,并且不希望增加太多程序开销,可以考虑使用Sean Barrett的stb_image.c,这是一个非常简单、最小化的适用于jpg/png(以及其他一些格式)的图像加载器,而且不需要任何依赖库,只有一个C文件。它很容易使用:
LodePNG是一个高度紧凑的PNG加载器,没有任何依赖。
请分享您使用DevIL的经验-它对我和许多其他人来说都运行得很完美。为什么不再尝试解决您的构建问题呢?这应该不太难。
SOIL是我曾经使用过的一款轻量级工具。它还专门用于加载OpenGL纹理。
加载位图(.bmp)和netpbm图像(.pbm, .pgm, .pnm)非常简单,因为它们未被压缩。要加载PNG,请使用libpng。要加载JPEG,请使用libjpeg。对于其他图像类型,请使用适当的库。很有可能将“lib”加到图像名称前面会给你这样的库,例如libtiff、libtga等。
一旦您加载并解压了原始图像数据,将其加载到OpenGL纹理中只需要调用glTexImage2D()
并使用正确的参数,以及一些其他的GL状态更改(例如如何进行mipmapping)。