OpenGL Android应用程序可以在大多数手机上运行,但Xoom上的纹理显示为白色

OpenGL Android应用程序可以在大多数手机上运行,但Xoom上的纹理显示为白色,android,opengl-es,textures,Android,Opengl Es,Textures,我的Android应用程序已经推出几个月了,可以在任意数量的WVGA手机上正常工作,如Droid、Droid2、Galaxy等 然而,在Motorola Xoom上,一小部分纹理加载了图像应该显示的白色框 在线研究最常见的原因似乎是没有使用两种纹理的力量。这似乎是一个不太可能的解释,因为它们在许多其他设备上工作正常。另外,我使用了两种纹理的力量。有一个警告是,我正在将一组位图动态加载到1024×1024的纹理中。我使用的代码来自一个现在已经不存在的名为Rokon的库,相关的纹理图集代码在这里:-

我的Android应用程序已经推出几个月了,可以在任意数量的WVGA手机上正常工作,如Droid、Droid2、Galaxy等

然而,在Motorola Xoom上,一小部分纹理加载了图像应该显示的白色框

在线研究最常见的原因似乎是没有使用两种纹理的力量。这似乎是一个不太可能的解释,因为它们在许多其他设备上工作正常。另外,我使用了两种纹理的力量。有一个警告是,我正在将一组位图动态加载到1024×1024的纹理中。我使用的代码来自一个现在已经不存在的名为Rokon的库,相关的纹理图集代码在这里:--就像我说的,我怀疑这可能是原因,因为它可以在很多其他设备上工作,并且我以这种方式加载的许多纹理都可以正常工作

但我不确定是什么原因造成的。考虑到Xoom上的可用内存量与应用程序运行的其他设备相比,内存问题似乎不太可能出现

现在我没有缩放功能,但我可以通过DeviceAnywhere(我看到白色背景)复制这个问题

LogCat中也没有显示任何有趣的内容


我知道这没什么可谈的,但我在这里不知所措,我应该看看哪些潜在的原因?提前感谢您的建议。

尝试使用glGetError()查看OpenGL是否抛出任何错误

您的应用程序是2D还是3D?在屏幕上绘制精灵时;你用哪种方法

如果您的纹理在绘制帧时为白色,这可能取决于:

  • 一个无结构的四边形(使用VBO:s或标准顶点数组)——可能不会,因为它可以在其他设备上工作
  • Xoom不支持
    draw\u纹理
    扩展-如果您使用的是2D
  • Xoom缺乏对VBO:s(顶点缓冲区对象)的支持——可能不是,几乎所有Android设备都支持VBO:s
  • 您是否实现了Xoom不支持的任何类型的纹理压缩
在运行时,使用以下代码获取扩展并检查它们是否可用:

String extensions = gl.glGetString(GL10.GL_EXTENSIONS);
boolean supportsDrawTexture = extensions.contains("GL_OES_draw_texture");
// Continue here and sooner or later you should see where Xoom lacks support 
// where other devices doesn't.

有没有可能你对Android自动调整位图大小的行为感到不满?加载位图时打印位图大小以进行检查,或移动位图以完全避免该行为。

您的纹理是否可能超过2048像素的宽度或高度?这是XOOM上允许的最大纹理大小