【发布时间】:2023-03-24 08:02:01
【问题描述】:
我正在做一个名为Space Voyager 的纯OpenGL 和FREEGLUT 项目。问题是在运行期间,当程序调用一个函数来加载所有图像时,播放器必须在加载屏幕上等待大约 2 分钟!!!!有些图像像 16 MB 的文件,否则平均为 1 MB。总共有大约20张图像。我需要在启动关卡之前加载所有图像。
现在我使用SOIL 在我的游戏中加载图像。 SOIL 具有从内存中加载图像的功能 SOIL_load_OGL_texture_load_from_memory( unsigned char *image_in_RAM ,...)。
我的解决方案是将所有图片嵌入到游戏的*.exe 文件中,并在运行时使用,这样可以节省在游戏中加载所有图片的时间。
对于如何将 jpg 图像准确嵌入可执行文件和
,我几乎迷失了方向
在运行时将其用作 unsigned char* imagePointer ?????
【问题讨论】:
-
您是否对代码进行了分析以检查加载是否是您应用中的瓶颈?
-
您可以使用 .tga 文件而不是 .jpg 文件?这是一种专为纹理设计的格式。它在您的磁盘上较重,因为文件通常比 .jpg 大,但加载速度稍快。
-
如果在“exe”文件中,相同的数据会更快地从磁盘加载到内存,逻辑似乎很不稳定。
-
见 LoadResource 和相关的东西。 msdn.microsoft.com/en-us/library/windows/desktop/…
-
我看不出这会更快。数据仍然需要从磁盘加载,JPG(或任何格式)仍然需要解码。它只是来自磁盘上的不同位置...
标签: c++ image opengl resources soil