使用OpenGL加速图像处理
概要
所有这些应用程序都用于进行图像处理。图像处理可以像将照片转换为灰度一样简单,也可以像分析特定人的人群视频一样复杂。尽管这些应用程序有很大差异,但这两个示例从创建到渲染都经历了相同的过程。
在计算机或手机上处理图像的方法有很多,但迄今为止最有效的方法是有效使用图形处理单元或 GPU。您的手机包含两个不同的处理单元:CPU 和 GPU。 CPU 是一个多面手,必须处理所有事情,而 GPU 可以专注于真正做好一件事,即并行执行浮点数学;事实证明,图像处理和渲染只不过是对渲染到屏幕的像素值进行大量浮点数学运算。
通过有效利用 GPU,您可以将手机上的图形渲染性能提高一百倍甚至一千倍。如果没有基于 GPU 的处理,想要在手机上过滤高质量的实时视频是不切实际的,甚至是不可能的。
我们用来利用这种能力的工具是着色器。着色器是一种用着色语言编写的基于 C 的小型程序。市场上有许多着色语言,但如果您进行 OS X 或 iOS 开发,您应该关注的一种是 OpenGL 着色语言 (GLSL)。您可以采用 GLSL 中的概念并将其应用到其他更专有的语言,例如 Metal Shading Language。我们在这里讨论的概念甚至可以很好地映射到 Core Image 中的自定义内核,尽管它们使用的语法略有不同。
这个过程可能非常令人畏惧,尤其是对于新开发人员来说。本文的目的是让您了解一些必要的基础信息,以便您继续编写自己的图像处理着色器。
着色器的定义
我们将在“The Wayback Machine”中进行一次短途旅行,以概述什么是着色器以及它如何成为我们工作流程中不可或缺的一部分。
如果