我已经尝试了从SDL到DevIL的所有内容,并且由于各种原因它们都失败了。
SDL段错误由于各种原因,和DevIL有一些奇怪的问题,甚至在我包括IL/ilut.h和链接一切,并包括其他头,它没有定义我需要加载图像到功能opengl纹理(关于USE_OPEN_GL的东西没有被定义)。我要求任何其他lib在那里加载位图或PNG的格式,我可以很容易地转换为opengl,或魔鬼问题的解决方案。
感谢用于OpenGL的C++跨平台图像加载器
回答
你不需要ILUT做你想做什么。您可以简单地使用ilGetData()和glTexImage2d()
加载位图(.bmp)和netpbm图像(.pbm,pgm,.pnm)非常简单,因为它们存储未压缩的图像。要加载PNG,请使用libpng。要加载JPEG,请使用libjpeg。对于其他图像类型,请使用适当的库。把'lib'打到图像名称的开始部分会给你一个这样的库,例如, libtiga,libtga等。
加载并解压缩原始图像数据后,将其加载到OpenGL纹理中只需调用glTexImage2D()
以及正确的参数以及一些其他GL状态更改(例如如何做mipmapping)。
图片Magick与C或C++绑定?
LodePNG是一个高度紧凑的PNG装载机没有依赖关系。
评论你与DevIL的经验 - 它对我和其他人来说是完美无瑕的。为什么不尝试再次解决构建问题? - 不应该太难)
土壤是我以前用过的一个体面的轻量级的。它实际上专门用于加载OpenGL纹理。
您也可以尝试FreeImage library。它支持加载不同的图像类型,功能类似于DevIL,可以为你开箱即用。
关于你的问题与DevIL,你不必建立ilu或ilut库来使Devil功能。我建议你自己管理OpenGL纹理对象,包括上传图像数据到OpenGL端。
libpng和libjpeg都可以用来构建&使用 - 难怪有两种包装库都有。
Sean Barrett的stb_image是一个非常简单,最小化的无废话加载程序,用于jpg/png(以及其他一些东西),而不依赖于单个C文件。C,如果你只是想加载一些图像文件,它增加了绝对最小的开销到您的程序,是直接使用:
感谢这个链接,这是伟大的 – joeld 2010-08-12 22:32:02
年轻,但还没有足够大的SFML可能是你正在寻找的人。我已经将它用于许多项目,并且它们在我所有的平台(Win7和Ubuntu)上运行良好。
- 1. 轻量级跨平台C GUI(OpenGL)
- 2. 跨平台C?
- 3. 递增加载的跨平台实现
- 4. C#Activex跨平台
- 5. Android和Java:跨平台属性加载
- 6. 简约跨平台GUI库对于C++
- 7. Xamarin跨平台UWP图像丢失
- 8. 加载SDL图像的OpenGL图像
- 9. C++中的跨平台OOP
- 10. 跨平台C++ web服务器库
- 11. C++跨平台MP3解码器?
- 12. 用于跨平台C/C++开发的资源
- 13. 用于跨平台移动开发的C或C++?
- 14. 跨平台加密容器库
- 15. 用于.NET服务的跨平台RPC
- 16. 用于python的跨平台usb模块?
- 17. 跨平台C++动态库插件加载程序
- 18. 跨平台C++工具链
- 19. C++跨平台多线程?
- 20. 跨平台C++工具链
- 21. 跨平台C++与libcurl
- 22. Flex:跨域图像加载?
- 23. 适用于iOS的OpenGL obj加载器
- 24. 用于opengl的3DS文件加载器
- 25. 是否有用于C或C++的任何跨平台gzip处理器库?
- 26. 用于Mac和Windows的跨平台类库使用C#
- 27. 组织跨平台的C/C++项目
- 28. 跨平台屏幕截图
- 29. 跨平台嵌入式大图像查看器
- 30. 用于跨平台应用程序开发的编辑器
我认为这应该是正确的答案。 这是一个轻量级的库,它具有令人难以置信的简单C API,它主要基于stb_image.c(这是绝对的斯巴达轻量级图像加载代码),但它更干净。 – bigD 2015-06-09 04:38:05