我已經嘗試了從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