[英]How to embed a texture for use with OpenGL into a C array?
我不希望我的游戲引擎的錯誤紋理依賴於外部文件,因為該文件可能會被刪除,這違背了擁有錯誤紋理的目的。 如何將圖像文件轉換為可以使用glTexImage2D
讀取的 C 樣式字符數組?
首先,將您的源圖像文件轉換為“原始”格式(同時在一對變量中“記住”圖像的尺寸)。 為此,您可以使用ImageMagick
的convert
工具。
這個答案給出了灰度圖像轉換的示例。 對於 RGB 圖像,要么編寫自己的圖像到二進制文件轉換器(因為您可能知道如何為其他紋理加載 RGB 圖像,或者使用STB或類似庫加載它,然后將圖像數據保存到二進制文件中) ,或者(如果不需要此轉換步驟的自動化)只需使用一些 GUI 工具來保存 RAW 圖像。
然后使用名為bin2h
(二進制文件到 C 頭文件)的工具,它將文件作為輸入(您的“原始”文件)並輸出一個帶有字節數組的 C 頭文件。
可以在Bin2H@github找到這樣的工具之一
然后使用聲明的數組(和一對具有紋理尺寸的變量)作為glTexImage2D
的參數。
如果您對 'gimp' 沒有反感,gimp 有一個 .h 或 .c 導出器。 通過這種方式,您可以直接訪問圖像的尺寸和緩沖區。 雖然它沒有被壓縮,所以如果你想使用大圖像,請注意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.