gpt4 book ai didi

java - 如何在代码中确定 Android 设备的纹理内存限制?

转载 作者:行者123 更新时间:2023-11-30 09:39:24 25 4
gpt4 key购买 nike

情况是这样的:我有两张宽度超过 1024 的图像,最终按 2 的幂放大到 2048。这在几乎所有经过测试的 Android 设备上都能正常工作,除了 HTC Eris 和 HTC Hero,它们会失败并只呈现一个空的白色矩形。

我想做的是添加一个检查以禁用使用大纹理的功能。所以基本上我只需要一种方法来确定设备是否可以支持高分辨率图像,以及一个简单的 boolean 结果。

我在网上发现了几个类似的问题,但没有一个可以解决这个问题。

解决方案(根据 Tim 的回答):

我能够在我的 GLSurfaceView.Renderer 类的 onSurfaceCreated() 方法中捕获此信息,然后对其进行测试:

public void onSurfaceCreated(GL10 gl, EGLConfig config)
{
IntBuffer textureLimit = IntBuffer.allocate(1);
gl.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, textureLimit);
this.mTextureLimit = textureLimit.get(0);
}

最佳答案

您是否探索过 glGet* 函数系列?可以查询当前gles实现的各种参数。

也许像 glGetIntegerv(GL_MAX_TEXTURE_SIZE, size); 这样的东西会起作用。

http://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml

您还可以使用 glGetError 进行错误检查。如果您尝试创建一个对于实现来说太大的纹理,它应该在调用 glTexImage2d 之后返回 GL_INVALID_VALUE。您可能会在创建纹理后捕获此错误,如果由于某种原因未能成功创建大纹理,则回退到较小的尺寸。

关于java - 如何在代码中确定 Android 设备的纹理内存限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9831309/

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