繁体   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