Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在代码中确定Android设备的纹理内存限制?_Java_Android_Graphics_Opengl Es_Hardware - Fatal编程技术网

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

Java 如何在代码中确定Android设备的纹理内存限制?,java,android,graphics,opengl-es,hardware,Java,Android,Graphics,Opengl Es,Hardware,情况是这样的:我有两张图像,宽度超过1024,最终以2的幂放大到2048。除了HTC ERI和HTC Hero,它在几乎所有经过测试的Android设备上都能正常工作,但失败后只呈现一个空白的白色矩形 我想做的是添加一个检查来禁用使用大纹理的功能。因此,基本上我只需要一种方法来确定设备是否能够支持高分辨率图像,并得到一个简单的布尔结果 我在网上发现了几个类似的问题,但没有一个能给出答案 解决方案(根据Tim的回答): 我能够在我的GLSurfaceView.Renderer类的onSurface

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

我想做的是添加一个检查来禁用使用大纹理的功能。因此,基本上我只需要一种方法来确定设备是否能够支持高分辨率图像,并得到一个简单的布尔结果

我在网上发现了几个类似的问题,但没有一个能给出答案

解决方案(根据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*函数族吗?您可以查询有关当前实现的各种参数

可能类似于
glGetIntegerv(GL\u MAX\u TEXTURE\u SIZE,SIZE)将起作用

您还可以使用
glGetError
进行错误检查。如果尝试创建的纹理对于实现来说太大,则在调用
glTexImage2d
后,它应返回
GL\u INVALID\u值。在创建纹理后,您可能会发现此错误,如果由于某些原因,大纹理未能成功创建,则会退回到较小的大小