【发布时间】:2016-03-15 18:04:44
【问题描述】:
目前我正在使用 OpenGL ES 在 Android 上开发图像处理算法。输入图像的尺寸非常大(如 4000x6000 像素),算法需要多次迭代。在我的实现中,我在片段着色器中编写了代码并设置了一个 FBO 纹理来实现渲染到纹理的东西。
但是,它需要将近 2~3 秒。在此期间,同样使用 OpenGL ES 渲染的 UI 层冻结。用户无法与之交互。在优化着色器代码之前,我想知道GPU是否可以同时运行两个着色器。
那么,我怎样才能让我的 UI 保持活跃?我是否需要多个上下文,一个上下文渲染 UI,另一个执行渲染到纹理着色器?
【问题讨论】:
-
一些 GPU 可以同时执行不同的着色器,但依赖它是个坏主意。在您的情况下,将工作与着色器分开并在帧上只执行一步会更好。例如,您可以将输入图像分成几块,一次只处理一个。
标签: android multithreading opengl-es