OpenGl中的位图格式无效

时间:2014-07-02 11:13:58

标签: 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; 

因为我认为它减少了内存使用量。但它会导致错误

GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, mBitmapFormat, mBitmap, 0);
类ASingleTexture;

但如果我删除

options.inPreferredConfig=Bitmap.Config.RGB_565;

然后没有错误发生但使用高内存。如何解决这个问题

2 个答案:

答案 0 :(得分:2)

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

  1. OpenGL纹理保存在本机内存中,与为应用程序分配的常规内存没有相同的限制。
  2. 创建纹理后,您不再需要保留位图。在加载纹理后立即调用位图上的回收,你应该没问题。

答案 1 :(得分:0)

图片的尺寸是多少。是power of two吗?如果没有,请使用图像编辑器更改尺寸,然后重试。