【发布时间】:2012-10-09 06:10:50
【问题描述】:
我正在开发一个依赖于 OpenGL ES 2.0 的图像处理程序,因此它可以部署在大量设备上。在很多情况下,人们会使用小图像,这不会绕过纹理限制,但是对于每个方向都有数千像素的大图像,它可能无法在多个设备上渲染。
我的第一个想法是将图像分割成更小的方块并单独渲染每个方块,这适用于简单的程序,但对于需要基于相邻像素值进行渲染的任务,例如卷积或扭曲效果,这不会足够了。
Photoshop 如何通过在其应用程序中为许多效果添加 OpenGL 支持来保持其 300,000 x 300,000 维度的能力?
对大于 GL_MAX_TEXTURE_SIZE 的图像执行后处理任务的最有效方法是什么?
在发送图像进行处理之前,仅渲染到可视区域并重新缩放图像以进行缩放?但这需要我重新处理图像以进行简单的放大/缩小和平移图像。我看到这种方法的唯一问题是无法将图像导出为完整质量的图像,因此这种方法在用户尝试保存他们的工作之前效果很好。
【问题讨论】:
-
对于涉及卷积的平铺,您可以在平铺边缘周围添加一个缓冲区,以便在这些边缘附近仍对正确的像素进行采样。缓冲区增加了一点处理和内存开销,并且它们不允许任意采样距离(在远程扭曲操作中最明显),但是可以使用短程卷积和高斯模糊之类的东西来工作这个。
标签: opengl-es glsl post-processing