【发布时间】:2013-08-27 15:27:15
【问题描述】:
是否可以使用可在运行时使用的 SDL 在程序中嵌入图像。
例如,我有一个程序在启动时会显示一个包含徽标和版权信息的启动画面。而不是将此图像放在位图文件中并使用 SDL_LoadBMP 将其加载到 SDL_Surface。我想将图像嵌入到程序二进制文件中,以阻止有人可能更改启动图像和版权名称。
有人对如何做到这一点有任何建议吗?示例代码会很棒。
【问题讨论】:
-
顺便说一句:如果有人想改变他们的启动画面,他们就会改变你的启动画面。这不应该是你这样做的唯一动机。
-
这是真的,如果有人真的想要他们可能会。但是我的另一个动机是该程序是一个小工具,需要便携且易于计算机技能较少的人使用,因此将整个程序作为单个文件比必须保存的小图像文件夹更可取在正确的位置。
-
这当然应该是可能的(不是微不足道的,而是可能的)。在我看来,正确配置的
SDL_RWOps连同对SDL_LoadBMP_RW()的调用可以从您配置它的任何位置提取图像,包括在编译时构建的静态内部缓冲区。这是否“解决”了您发现的问题是另一回事。 -
刚刚看了一下这些是如何工作的,并且根据我的理解,如果我在源代码中将位图图像转换为字符数组。我可以使用这些命令让它在运行时从 const 变量中加载位图?
-
@Scott 没错,对于获取该静态图像的方法,Dietrich 在下面提供了一些选项。一旦您在可执行文件中获得了 bin 格式的静态图像,只需设置一个
SDL_RWOps以使用使用该图像作为其数据“源”的自定义功能集(由您编写)。你明白了。