OpenGL Android应用程序可以在大多数手机上运行,但Xoom上的纹理显示为白色
我的Android应用程序已经推出几个月了,可以在任意数量的WVGA手机上正常工作,如Droid、Droid2、Galaxy等 然而,在Motorola Xoom上,一小部分纹理加载了图像应该显示的白色框 在线研究最常见的原因似乎是没有使用两种纹理的力量。这似乎是一个不太可能的解释,因为它们在许多其他设备上工作正常。另外,我使用了两种纹理的力量。有一个警告是,我正在将一组位图动态加载到1024×1024的纹理中。我使用的代码来自一个现在已经不存在的名为Rokon的库,相关的纹理图集代码在这里:--就像我说的,我怀疑这可能是原因,因为它可以在很多其他设备上工作,并且我以这种方式加载的许多纹理都可以正常工作 但我不确定是什么原因造成的。考虑到Xoom上的可用内存量与应用程序运行的其他设备相比,内存问题似乎不太可能出现 现在我没有缩放功能,但我可以通过DeviceAnywhere(我看到白色背景)复制这个问题 LogCat中也没有显示任何有趣的内容OpenGL Android应用程序可以在大多数手机上运行,但Xoom上的纹理显示为白色,android,opengl-es,textures,Android,Opengl Es,Textures,我的Android应用程序已经推出几个月了,可以在任意数量的WVGA手机上正常工作,如Droid、Droid2、Galaxy等 然而,在Motorola Xoom上,一小部分纹理加载了图像应该显示的白色框 在线研究最常见的原因似乎是没有使用两种纹理的力量。这似乎是一个不太可能的解释,因为它们在许多其他设备上工作正常。另外,我使用了两种纹理的力量。有一个警告是,我正在将一组位图动态加载到1024×1024的纹理中。我使用的代码来自一个现在已经不存在的名为Rokon的库,相关的纹理图集代码在这里:-
我知道这没什么可谈的,但我在这里不知所措,我应该看看哪些潜在的原因?提前感谢您的建议。尝试使用glGetError()查看OpenGL是否抛出任何错误您的应用程序是2D还是3D?在屏幕上绘制精灵时;你用哪种方法 如果您的纹理在绘制帧时为白色,这可能取决于:
- 一个无结构的四边形(使用VBO:s或标准顶点数组)——可能不会,因为它可以在其他设备上工作
- Xoom不支持
扩展-如果您使用的是2Ddraw\u纹理
- 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上允许的最大纹理大小