opengl - 打开 GL 纹理压缩

标签 opengl compression textures

我是 Open GL 的新手。

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

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

是否有任何(可信的)情况下您扩展了纹理数据,并且需要在运行时对其进行压缩?

谢谢!

最佳答案

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

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

编辑:

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

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

关于opengl - 打开 GL 纹理压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4589177/

相关文章:

java - 纹理以错误的顺序显示

c++ - 如何在 QOpenGLWidget 中渲染三角形?

python - 如何使用 PyOpenGL 指定缓冲区偏移量

image - 在 MATLAB 中使用霍夫曼编码进行灰度图像压缩

python - Fasttext 量化无监督模型

opengl - GL_SRGB8_ALPHA8 对纹理插值的影响?

c++ - OpenGL 局部绘图

c++ - 上下文共享在带有 glfw 和 glew 的 opengl 中不起作用,第二个窗口就像上下文根本不共享

html - 减少 HTML 文件大小 - 不仅仅是最小化?

javascript - 使用 ShaderMaterial 的自定义几何体的纹理加载在 Three.js 中不起作用