Android系统。 W / OpenGLRenderer:位图太大而无法上传到纹理中

时间:2016-01-24 13:56:34

标签: android opengl-es bitmap

当我致电sudo apt-get install python-mysqldb 以获得一侧超过4096像素的Canvas.drawBitmap()时 - 我什么都没得到。没有错误,也没有绘制位图。在LogCat中只出现此消息:

  

W / OpenGLRenderer:位图太大而无法上传到纹理中(2880x4920,max = 4096x4096)

这引出了以下问题:

  1. 4096x4096的限制取决于什么? Android版本?内核驱动程序?还是硬件?
  2. 如何在运行时检查当前设备的此限制?
  3. 如何捕获错误“W / OpenGLRenderer:位图太大......”

1 个答案:

答案 0 :(得分:1)

这取决于硬件和软件。您可以在运行时使用有效的OpenGL上下文进行查询(请参阅:Get OpenGL max texture size

int[] maxTextureSize = new int[1];
GLES10.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, maxTextureSize, 0);

请注意,支持的大小可能会更小,具体取决于纹理的格式。例如,除了最大像素大小外,您的硬件还可以具有最大纹理大小(以字节为单位)。要检查支持的纹理大小,请使用所需的大小和格式创建代理纹理(GL_PROXY_TEXTURE_2D目标,而不是GL_TEXTURE_2D),然后使用{{查询纹理大小(宽度或高度) 1}}。如果纹理太大,则大小将设置为0.