打开GL纹理压缩

Pet*_*vdL 3 compression opengl textures

我是Open GL的新手.

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

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

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

谢谢!

eod*_*ash 5

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

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

编辑:

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

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