我的 android 应用程序处理非常大的位图。因此,我在图像视图上关闭了硬件加速。但是,一些用户已将开发人员选项“强制 GPU 加速”设置为打开。这会导致错误“位图太大而无法上传到纹理中”。如果我使用 isHardwareAccelerated() 检查视图,它总是返回 false。
有什么方法可以捕获 OpenGL 错误“位图太大而无法上传到纹理中”?
位图由像素组成,您可以计算位图矩阵中的像素数,设置位图像素数的限制。在 OpenGL 中我不能说,但总的来说我们可以轻松处理它们,还有一个方法
bitmap.inSampleSize();
如果你分配
Bitmap.inSampleSize()= 1;
然后将加载原始位图像素。
Bitmap.inSampleSize()= 2;
那么像素将变为原始像素的一半。
Bitmap.inSampleSize() = 4
那么像素将变为原始像素的 1/4。这样你可以减少位图中像素的大小,我在我的程序中做了这件事,希望它也能和你一起工作。
我没有在 Android 上使用 OpenGL,因此不知道是否有什么特别的事情必须做才能捕获未捕获的异常或错误。您可以尝试注册一个全局异常处理程序并检查您是否能够在此处捕获 OpenGL 错误。