Android OpenGl中的位图格式无效

Android OpenGl中的位图格式无效,android,opengl-es,bitmap,rajawali,Android,Opengl Es,Bitmap,Rajawali,我在我的应用程序中使用Rajawali库 我正在尝试使用选项创建png图像 options.inPurgeable = true; options.inInputShareable = true; options.inSampleSize = sampleSize; options.inDither = false; options.inScaled = false; options.inPreferredConfig=Bitmap.Config.RGB_565; 因为我认为它减少了内存使用

我在我的应用程序中使用Rajawali库

我正在尝试使用选项创建png图像

options.inPurgeable = true;
options.inInputShareable = true;
options.inSampleSize = sampleSize;
options.inDither = false;
options.inScaled = false;
options.inPreferredConfig=Bitmap.Config.RGB_565; 
因为我认为它减少了内存使用。但它会在

GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, mBitmapFormat, mBitmap, 0);
在类中为单纹理

但如果我移除

options.inPreferredConfig=Bitmap.Config.RGB_565;

这样就不会发生错误,但要使用高内存。如何解决此问题

图像的尺寸是多少。这是一辆汽车吗?如果没有,请使用图像编辑器更改尺寸,然后重试。

如果我没有弄错的话,用于OpenGL纹理的位图需要使用ARGB_8888配置。当然,这样每个位图都需要更多的内存,但这里有几点需要记住:

  • OpenGL纹理保存在本机内存中,与为应用程序分配的常规内存没有相同的限制
  • 一旦创建了纹理,就不需要再保存位图了。加载纹理后立即在位图上调用recycle,您应该会没事的

  • 图像大小是512X512。正如我所说的,我删除了选项。inPreferredConfig=Bitmap.Config.RGB_565;不会发生错误。否则将导致错误在我的情况下,此问题是由大小为1 x 64的位图引起的。显然,三星Galaxy Y上的1不被认为是2的幂。到底发生了什么错误?你能发布你的堆栈跟踪吗?