我正在处理大型位图(5000x1440,认为是双重,三重监视器),它们有时不适合应用程序可用的内存(堆)(对于使用Java开发的部分也是如此)。 / p>
然而,Android中的本机代码能够分配设备上的可用内容(差不多)。问题是,人们无法轻易地将这些数据作为int[]
或类似的内容访问Bitmap
类。
我得到一些提示,一些OpenGL函数接受ByteBuffer参数,所以我制作了一个解决方案的原型,我将这个图像作为纹理应用于OpenGL平面。
免责声明:我是一名GL总裁,所以这可能是一个愚蠢的问题
我想快速更改纹理数据(因为我通过wifi获取图像)。如果我只是更改缓冲区内容,则没有任何反应。
如果我在每个draw
加载纹理,该应用程序可以正常工作,但很快就会崩溃许多应用程序(我猜它会重载GL-ES或其他东西,而Launcher,Google应用程序等会死掉然后重启)。所以这显然不好。
那么,如何快速(经常)以有效的方式改变纹理?