gpt4 book ai didi

android - 减少 OpenGL ES 1.1 中纹理的内存使用

转载 作者:太空宇宙 更新时间:2023-11-03 11:38:35 24 4
gpt4 key购买 nike

我在 OpenGL ES 中的场景需要多个高分辨率纹理,但它们是灰度的,因为我仅将它们用于 mask 。我需要减少内存使用。

我尝试使用 Bitmap.Config.ALPHA_8 和 RGB_565 加载这些纹理。 ALPHA_8 似乎实际上增加了内存使用。

是否有某种方法可以将纹理加载到 OpenGL 中并使其使用每像素少于 16 位?

glCompressedTexImage2D 看起来很有前途,但据我所知,不同的手机提供不同的纹理压缩方法。另外,我不知道压缩是否真的减少了运行时的内存使用。以 ATITC 和 PVRTC 格式存储我的纹理的解决方案是什么?如果是这样,我如何检测设备支持哪种格式?

谢谢!

最佳答案

PVRTC、ATITC、S3TC 等,GPU 原生压缩纹理应减少内存使用并提高渲染性能。

例如(对不起,在 C 中,您可以在 Java 中使用 GL11.glGetString 实现它),

const char *extensions = glGetString(GL_EXTENSIONS);
int isPVRTCsupported = strstr(extensions, "GL_IMG_texture_compression_pvrtc") != 0;
int isATITCsupported = strstr(extensions, "GL_ATI_texture_compression_atitc") != 0;
int isS3TCsupported = strstr(extensions, "GL_EXT_texture_compression_s3tc") != 0;

if (isPVRTCsupportd) {
/* load PVRTC texture using glCompressedTexImage2D */
} else if (isATITCsupported) {
...

此外,您还可以在 AndroidManifest.xml 中使用纹理格式指定支持的设备。

编辑:

关于android - 减少 OpenGL ES 1.1 中纹理的内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5240293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com