簡體   English   中英

如何將與 OpenGL 一起使用的紋理嵌入到 C 數組中?

[英]How to embed a texture for use with OpenGL into a C array?

我不希望我的游戲引擎的錯誤紋理依賴於外部文件,因為該文件可能會被刪除,這違背了擁有錯誤紋理的目的。 如何將圖像文件轉換為可以使用glTexImage2D讀取的 C 樣式字符數組?

首先,將您的源圖像文件轉換為“原始”格式(同時在一對變量中“記住”圖像的尺寸)。 為此,您可以使用ImageMagickconvert工具。

這個答案給出了灰度圖像轉換的示例。 對於 RGB 圖像,要么編寫自己的圖像到二進制文件轉換器(因為您可能知道如何為其他紋理加載 RGB 圖像,或者使用STB或類似庫加載它,然后將圖像數據保存到二進制文件中) ,或者(如果不需要此轉換步驟的自​​動化)只需使用一些 GUI 工具來保存 RAW 圖像。

然后使用名為bin2h (二進制文件到 C 頭文件)的工具,它將文件作為輸入(您的“原始”文件)並輸出一個帶有字節數組的 C 頭文件。

可以在Bin2H@github找到這樣的工具之一

然后使用聲明的數組(和一對具有紋理尺寸的變量)作為glTexImage2D的參數。

如果您對 'gimp' 沒有反感,gimp 有一個 .h 或 .c 導出器。 通過這種方式,您可以直接訪問圖像的尺寸和緩沖區。 雖然它沒有被壓縮,所以如果你想使用大圖像,請注意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM