如何在 OSX 下的 SDL/OpenGL 应用程序中加载 JPG/PNG 纹理
我正在编写一个在 OSX 下运行的 SDL / OpenGL 应用程序。我必须使用现有的代码,该代码使用 DevIL 库来加载 JPG 和 PNG 纹理。不幸的是,这在 OS X 下工作得非常糟糕,所以我决定根本不使用 DevIL,并使用另一个库重写应用程序的相应部分。我想保持它的灵活性(DevIL 可以处理很多图像格式)并且易于使用。您可以推荐 DevIL 的良好替代品吗?该应用程序完全用 C++ 编写。
i am writing an SDL / OpenGL application that runs under OSX. I have to use existing code which uses the DevIL library for loading JPG and PNG textures. Unfortunately, this works very bad under OS X, so i decided not to use DevIL at all, and rewrite the respective parts of the application using another library. I want to keep it flexible (DevIL can handle a lot of image formats) and easy to use. Is there a good replacement for DevIL that you can recommend? The application is entirely written in C++.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
查看 SDL_image 库。它提供诸如
IMG_LoadPNG
之类的功能,可以将您的图片“作为”SDL_Surface 加载。由于您已经使用 SDL,这应该非常适合您的程序。
示例取自 SDL_image 文档:
Have a look at the SDL_image library. It offers functions like
IMG_LoadPNG
that load your picture "as an" SDL_Surface.Since you already work with SDL this should fit quite well in your program.
Sample taken from the SDL_image documentation:
SDL 2 SDL_image 最小可运行示例
main.c
GitHub 上游。
编译并运行:
结果:
在 Ubuntu 16.04、GCC 6.4.0、SDL 2.0.4、SDL Image 2.0.1 上测试。
SDL 2 SDL_image minimal runnable example
main.c
GitHub upstream.
Compile and run:
Outcome:
Tested on Ubuntu 16.04, GCC 6.4.0, SDL 2.0.4, SDL Image 2.0.1.
看看freeimage。它支持所有主要格式,并且可以使用 macports 轻松构建。合作也很愉快。自动检测图像格式等。
Take a look at freeimage. It supports all major formats and is easily built with macports. Nice to work with as well. Auto-detects image format etc.
如果您使用的是 Mac 操作系统,为什么不直接使用 CGImageSource 进行加载? OS X 本身支持加载多种文件格式,包括 PNG 和 JPEG。
If you're on Mac OS anyway, why not just use CGImageSource to do the loading? OS X natively supports loading many file formats including PNG and JPEG.