打开GL纹理压缩

时间:2011-01-03 22:54:01

标签: opengl compression textures

我是Open GL的新手。

是否需要在运行时进行纹理压缩?

当然,它的工作方式是在构建时压缩大纹理文件。在运行时,您可以根据需要展开压缩纹理文件的某些部分,以应用于曲面。

是否存在扩展纹理数据的任何(可信)情况,您需要在运行时压缩它吗?

谢谢!

1 个答案:

答案 0 :(得分:5)

您是在谈论压缩图像格式(如JPEG还是包含图像的zip文件)或压缩纹理格式(如DXT1等)?当您拥有压缩纹理(例如DXT)时,您不必在运行时对其进行解压缩,因此图形卡可以在对纹理进行采样时动态执行。

对于可以提前预编译所有资产的游戏,在(资产)构建时应用DXT压缩等功能通常是个好主意,这样您就可以获得纹理压缩的所有好处(加载时间更短,内存更少)带宽使用等),而无需在运行时实际执行压缩的成本。也就是说,在任何你想用压缩纹理渲染的情况下,但你无法访问你将提前使用的图像(也许你让用户从他们的机器或其他东西中选择图像文件)你会有别无选择,只能在运行时进行压缩。

编辑:

在运行时进行DXT压缩的方法是调用glTexImage2D,为'format'参数指定源图像的实际格式(GL_RGBA等),并为'internal format'参数指定压缩格式,例如DXT1的GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,假设您的卡支持gl_ext_texture_compression_s3tc扩展名。

如果您有预压缩的纹理数据,那么您可以使用glCompressedTexImage2D直接加载它。

相关问题