我正在制作一个相机应用,这个应用会为用户提供一些滤镜。目前我的代码在 NDK 上并且工作正常,但是我想让它更快一点。看来 GPU 和 opengl Es 2.0 是可行的。我对 GPU 的唯一担心是它们的内存限制。由于现代相机拍摄 5-10 mp 图像,而 GPU 内存限制远小于此。我想知道是否有办法解决该限制。在我看来,唯一合乎逻辑的选择是将图像分成更小的部分,然后在 GPU 上处理它们,最后将它们组合成最终图像。我的问题是,这种方法是否仍然对性能有好处,还有其他选择可以在移动 GPU 上处理高分辨率图像。
编辑:我需要澄清一下,我想使用 GPU 进行图像处理,因此我的目标不是将结果渲染到屏幕上。我会将它渲染到另一个纹理并将其保存到磁盘。
最佳答案
您的拼贴想法自任天堂娱乐系统以来就一直在使用,该系统具有 1.79 MHz 的 Ricoh 2A03,因此这是一个很好的方法。 Google 使用平铺来管理 map 显示,甚至像 Crysis 这样的游戏也倾向于将大部分纹理的纹理大小限制在 1024x1024(1 百万像素)之类的东西。是的,10 兆像素需要 30 兆内存,因此某些设备可能会出现问题,特别是因为如果您使用源纹理和目标纹理,则意味着需要 60 兆内存。
请记住,纹理大小往往使用 2 的幂(2、4、8、16、32、64 等)。至少如果你将它切碎并拼贴图像,你有时会获得更好的质量。
关于android - 如何处理 GPU 的内存限制以在 GPU 上进行高分辨率图像处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12689742/