【问题标题】:How to catch error 'Bitmap too large to be uploaded into a texture'如何捕获错误“位图太大而无法上传到纹理中”
【发布时间】:2012-08-19 23:38:17
【问题描述】:

我的 android 应用程序处理非常大的位图。因此,我在图像视图上关闭了硬件加速。 但是,一些用户已将开发人员选项“强制 GPU 加速”设置为打开。这会导致错误“位图太大而无法上传到纹理中”。 如果我使用 isHardwareAccelerated() 检查视图,它总是返回 false。

有什么方法可以捕获 OpenGL 错误“位图太大而无法上传到纹理中”?

【问题讨论】:

  • 我也有同样的问题。你找到什么东西来捕捉这个错误了吗?

标签: java android bitmap


【解决方案1】:

位图由像素组成,您可以计算位图矩阵中的像素数,设置位图像素数的限制。在 OpenGL 中我不能说,但总的来说我们可以轻松处理它们,还有一种方法
bitmap.inSampleSize();

如果你指定

Bitmap.inSampleSize()= 1;

然后将加载原始位图像素。

Bitmap.inSampleSize()= 2;

那么像素将变为原始像素的一半。

Bitmap.inSampleSize() = 4

那么像素将变为原始像素的 1/4。 这样您可以减小位图中像素的大小, 我已经在我的程序中做了这件事,希望它也能对你有用。

【讨论】:

  • 感谢您的提示,但我需要最高质量。因此,我在此视图上关闭了硬件加速。但是,我只需要知道用户是否启用了导致此错误的“强制 GPU 加速”。
【解决方案2】:

我没有在 Android 上使用 OpenGL,因此不知道是否有什么特别的事情必须做才能捕获未捕获的异常或错误。您可以尝试register 一个全局异常处理程序并检查您是否能够在此处捕获 OpenGL 错误。

【讨论】:

  • 感谢这个想法!但是,由于它不是一个实际的例外,因此这是行不通的。该应用程序不会崩溃或任何事情,只是视图不会绘制。我刚刚在 Logcat 的调试/警告日志中看到了 OpenGL 错误消息。
猜你喜欢
  • 2012-05-03
  • 2015-04-05
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
相关资源
最近更新 更多