如何绕过 GL_MAX_TEXTURE_SIZE 进行图像处理

Eva*_*edy 5 opengl-es glsl post-processing

我正在开发一个依赖于 OpenGL ES 2.0 的图像处理程序,因此它可以部署在多种设备上。在许多情况下,人们会使用小图像,这不会绕过纹理限制,但对于每个方向都有数千像素的较大图像,它可能无法在多个设备上渲染。

我的第一个想法是将图像分割成更小的方块并单独渲染每个方块,这适用于简单的程序,但对于需要基于相邻像素值(例如卷积或扭曲效果)进行渲染的任务,这还不够。

Photoshop 如何通过在其应用程序中添加 OpenGL 支持来实现许多效果,从而保持其 300,000 x 300,000 尺寸功能?

对大于 GL_MAX_TEXTURE_SIZE 的图像执行后处理任务的最有效方法是什么?

在发送图像进行处理之前仅渲染到可视区域并重新缩放图像以进行缩放?但这需要我重新处理图像以进行简单的放大/缩小和平移图像。我发现这种方法的唯一问题是无法将图像导出为全质量图像,因此这种方法在用户尝试保存其工作之前一直有效。

Maj*_*Max -3

问题是opengl用于实时渲染而不适合图像处理,最好的选择是使用CPU程序及其所有好处(C/C++,线程,无纹理限制,..)仅在以下情况下考虑opengl “帮助”CPU(如 NVIDIA CUDA)。

  • 嗯,既然他谈到了 ES 设备,OpenGL 和古老的 GPGPU 片段着色器方法(每个人在 CUDA 之前都采用的方法)仍然是 GPU 加速图像处理的最佳选择。事实上,这种方法非常适合简单的图像处理任务(尽管同步和反馈对于更复杂的任务可能会变得困难)。 (2认同)