我正在尋找一種在C++ Opengl中加載tgas和png的方法 - 我不喜歡使用庫的想法。C++ Opengl - 如何在現代OpenGL中加載tgas和png?
是否有任何示例代碼/鏈接/建議,你可以給我這個話題?
我正在尋找一種在C++ Opengl中加載tgas和png的方法 - 我不喜歡使用庫的想法。C++ Opengl - 如何在現代OpenGL中加載tgas和png?
是否有任何示例代碼/鏈接/建議,你可以給我這個話題?
爲TGA編寫一個加載器相對比較簡單,因此對於一個練習來說:去做吧。
另一方面,PNG是一種不同的野獸。它具有巨大的功能,支持多種壓縮方案和編碼,您必須支持所有這些才能加載由任何程序生成的PNG文件,而這些程序無法控制哪些功能被使用,哪些功能不可用。
這就是說,libpng是涉及到讀寫PNG文件的參考實現和實際標準。
自OpenGL-1.1以來,實際的紋理加載並沒有改變,但是由於OpenGL-2對維度的2次冪約束已經解除了,所以值得注意的例外。
感謝您的回覆!我已經開始了tga加載工作,但是,對於png,我可能只會看看已經存在的png加載器的源代碼並從那裏做些事情。 – FamSlam
「多種壓縮方案」?從[規範描述](http://www.w3.org/TR/PNG-Compression.html):「PNG壓縮方法0(**目前爲PNG定義的唯一壓縮方法**)指定放氣/充氣。 。「 – usr2564301
@Jongware:這不僅僅是重要的壓縮方法,還包括預處理步驟,以增強壓縮的結果。現在PNG只定義了過濾器方法0,它提供了5種不同的過濾器類型。必須支持它們中的每一個才能正確解碼PNG圖像。當我提到壓縮方案時,我會考慮壓縮器和解相關濾波器的可能組合。此外,PNG可能會在新版本中引入新的壓縮器和過濾器類型,並且只需更新庫,使用參考libpng就可以爲您提供支持。 – datenwolf
預製圖書館有什麼問題?即使如此:TGA和PNG格式都可以在網上找到。 TGA很容易(當然這取決於你自己的編程水平),PNG不是很多,但仍然可行。點擊標籤[tag:png]和[tag:tga],然後點擊他們的「更多信息」鏈接獲取資源。 – usr2564301
@Jongware感謝您的反饋。我想預先製作的庫文件沒有什麼問題 - 但是,我覺得它們對我自己的項目來說並不是什麼新鮮事。如果構建我自己的圖像加載庫需要太長時間或效率不高(加載時間方面),您推薦使用哪些庫? – FamSlam
[SOIL](http://www.lonesock.net/soil.html)是一個用OpenGL設計的非常簡單的C圖像加載器,它運行良好。它也是公有領域,因此您可以將其插入源並忘記它。儘管它在現代OpenGL中有許多不必要的功能,所以它可能是一個不錯的主意。 – orost