如何将用于 OpenGL 的纹理嵌入到 C 数组中?

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

我不希望我的游戏引擎的错误纹理依赖于外部文件,因为该文件可能会被删除,这违背了错误纹理的目的。如何将图像文件转换为可以使用 glTexImage2D 读取的 C 风格字符数组?

首先,将源图像文件转换为 'raw' 格式(同时在一对变量中“记住”图像的尺寸)。为此,您可以使用 ImageMagickconvert 工具。

answer. For RGB images either write your own image-to-binary-file converter (since you probably know how to load RGB images for other textures, or use the STB 或类似的库给出了灰度图像转换的示例以加载它,然后将图像数据保存到二进制文件),或者(如果不需要此转换步骤的自​​动化)只需使用一些 GUI 工具来保存 RAW 图像。

然后使用名为 bin2h 的工具(二进制文件到 C 头文件),它将文件作为输入(您的 'raw' 文件)并输出带有字节数组的 C 头文件。

可以在 Bin2H@github

找到此类工具之一

然后使用声明的数组(和一对具有纹理维度的变量)作为 glTexImage2D 的参数。

如果您对 'gimp' 没有反感,gimp 有一个 .h 或 .c 导出器。通过这种方式,您可以直接访问图像的尺寸和缓冲区。虽然它没有压缩,但如果你想使用大图像,请注意。