1

我在我的应用程序中使用 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;

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

4

2 回答 2

2

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

  1. OpenGL 纹理保存在本机内存中,与为应用程序分配的常规内存没有相同的限制。
  2. 一旦你创建了你的纹理,你就不需要再拿着位图了。加载纹理后立即在位图上调用回收,你应该没问题。
于 2014-07-02T13:49:40.533 回答
0

你的图像的尺寸是多少。是二的吗?如果不是,请使用图像编辑器更改尺寸并重试。

于 2014-07-02T12:15:22.450 回答