[英]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.