Pet*_*vdL 3 compression opengl textures
我是Open GL的新手.
是否需要在运行时进行纹理压缩?
当然,它的工作方式是在构建时压缩一个大的纹理文件.在运行时,您可以根据需要展开压缩纹理文件的某些部分以应用于曲面.
是否存在扩展纹理数据的任何(可信)情况,您需要在运行时压缩它?
谢谢!
您是在谈论压缩图像格式(如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直接加载它.