【发布时间】:2012-08-16 03:31:32
【问题描述】:
我需要加载尽可能多的图像,然后将它们作为动画播放。因此,我想最小化每个图像的大小。
我的问题是,如果我加载一个 jpeg 图像文件,我的机器会将其存储为 bmp 格式吗?目前,我正在使用 OpenGL 加载 bmp 图像(每个大约 3.5 MB)。 600 个 bmp 文件已经超出了我的记忆。我怎样才能加载更多,比如 2000。
【问题讨论】:
标签: opengl animation jpeg preload bmp
我需要加载尽可能多的图像,然后将它们作为动画播放。因此,我想最小化每个图像的大小。
我的问题是,如果我加载一个 jpeg 图像文件,我的机器会将其存储为 bmp 格式吗?目前,我正在使用 OpenGL 加载 bmp 图像(每个大约 3.5 MB)。 600 个 bmp 文件已经超出了我的记忆。我怎样才能加载更多,比如 2000。
【问题讨论】:
标签: opengl animation jpeg preload bmp
我的问题是,如果我加载一个 jpeg 图像文件,我的机器会将其存储为 bmp 格式吗?
您的机器会将其作为原始像素保存在内存中,除非您使用的是压缩纹理格式,但它与 JPEG 非常不同。
文件格式对硬件和 OpenGL 没有意义。
我怎样才能加载更多,比如 2000。
你不应该。如果您正在播放动画,请在该图像显示时加载图像,然后将其删除。对于 OpenGL,您应该使用 glTexSubImage2D 替换纹理对象的内容。
【讨论】:
您可以考虑以更适合动画的格式存储图像。 视频浮现在脑海中。
如果您只需要一次图像 - 在显示后立即从内存中丢弃它们。
使用 DXT 打包图像。质量略有下降,您将获得 x4/x8 压缩比。
检查你的 OpenGL 设置,你是否使用自动生成的 mipmap,你需要它们吗?
【讨论】: