美文网首页Graphics
iOS Graphics 图形框架

iOS Graphics 图形框架

作者: hexiaoxiao | 来源:发表于2018-10-10 13:50 被阅读34次

    ARKit

    Integrate iOS device camera and motion features to produce augmented reality experiences in your app or game.

    功能

    可以用来构建 AR 应用。

    ARKit

    Core Animation

    Render, compose, and animate visual elements.

    Core Animation

    功能

    Core Animation是真正的渲染层, 每一个 UIView 都有一个对应的 CALayer 负责具体的渲染。CALayer 的 contents 保存图层要显示的内容, 可以通过设置 CGImage, 实现 CALayerDelegate displayLayer 方法或者自定义绘图 drawRect 方法。UIKit控件内部也是使用这些方法实现。CALayer中的属性基本上都是在 GPU 上绘制。

    Core Animation 提供一系列其他 Layer 实现特定的功能, 比如 CAShapeLayer, CATextLayer 等。

    图形层级结构的管理

    提供添加, 插入和删除子图层的方法用来管理视图层级结构。UIKit 图形层级相关的方法也是基于 Core Animation。

    动画执行

    提供 CAAnimation 相关的一系列类, 可以实现各种动画效果。

    负责具体的渲染调度工作
    1. 视图布局计算。
    2. 文本渲染, 还有自定义 drawRect, 都会绘制成 Bitmap。
    3. 图片解压缩处理, 图片传到 GPU 处理之前, 需要解压缩为位图。
    4. 通过 Metal 或者 OpenGL 调度 GPU 进行最后的渲染, 显示到屏幕上。

    Core Animation Programming Guide

    Core Graphics

    Harness the power of Quartz technology to perform lightweight 2D rendering with high-fidelity output. Handle path-based drawing, antialiased rendering, gradients, images, color management, PDF documents, and more.

    功能

    运行时 2D 图形的绘制

    基于 Quartz 绘图引擎实现, 主要用于运行时 2D 图形绘制。包括三角, 矩形, path等图形和 shadow, mask, color, transform 的绘制。常用于自定义 drawRect 方法内绘制, 异步绘制 Bitmap。Core Graphics 在 CPU上绘制出Bitmap, 交由 GPU 进行最终合成。

    比如一个 layer 视图层级比较复杂, 而 subLayer 不需要处理触摸相关的事件, 可以直接把整个 layer 绘制成一张图片, 提交性能, 减低内存。

    比如设置 layer.shouldRasterize = true 会进行光栅化处理, 就是由 Core Graphics 在 CPU 上绘制 shadow, mask, border 等属性, 并且将整个layer层级绘制成一个Bitmap, 减轻GPU的压力。

    Quartz 2D Programming Guide

    Core Image

    Use built-in or custom filters to process still and video images.

    功能

    图像滤镜处理
    滤镜
    • 对静态图片进行滤镜处理, 比如常见的照片滤镜效果。
    • 支持多种滤镜组合操作, 滤镜链会自动组合成一次操作, 提高性能。
    • 配合使用 AVFoundation 对视频进行滤镜处理。
    • 可以使用 Metal 或者 OpenGL 进行实时渲染。
    • 使用 Metal 创建自定义滤镜。
    • Core Image 支持 GPU 和 CPU 两种渲染方式, GPU 渲染性能更好。Core Image 优先使用 Metal 进行渲染处理, 不支持 Metal 的设备使用 OpenGL 处理。当使用CPU 渲染的时候选择 Core Graphics 进行处理。
    图像特征检测

    提供人脸, 二维码, 文字, 矩形, 条码检测功能。例如使用人脸检测, 可以检测出人脸眼睛, 鼻子等位置, 可以做一些简单的贴纸效果。 iOS 11 开始, 图像检测功能基于 Vision 框架实现。


    Detect

    Core Image Programming Guide
    Core Image

    Image I/O

    Read and write most image file formats. Manage color and access image metadata.

    功能

    主要用于图片的处理, 比如图片解压缓存, 获取图片属性, 图片尺寸缩放, 图片逐步加载, 生成新的图片。
    • 最初是 Core Graphics 的一部分, 现在上层 UIKit,Core Image,Core Graphics 中的 CGImage 处理,都是依赖 Image/IO 库。
    • 网络图片处理库可以使用基于 Image I/O 异步解码缩放下载图片为 UIImageView 的尺寸, 可以节省内存, 减少 CPU 解压时间, 避免主主线程卡顿。
    • 可以用于渐进式图片的加载。

    Image I/O Programming Guide

    Metal

    Render advanced 3D graphics and perform data-parallel computations using graphics processors.

    功能

    Metal 是用来取代 OpenGL 进行底层渲染的库, 相比 OpenGL有更好的性能, 但是不能跨平台, 只能使用在 iOS 上。Core Image, SpriteKit 和 SceneKit也是基于 Metal 构建。

    图形绘制

    用于各种图形的绘制, 包括 3D 场景的绘制。

    并行计算

    在 GPU 上进行并行计算, 因为 GPU 更适合大规模并行计算, 浮点计算性能更好。

    Metal Programming Guide

    Metal Performance Shaders

    Optimize graphics and compute performance with kernels that are fine-tuned for the unique characteristics of each Metal GPU family.

    功能

    图像过滤

    Core Image 也支持由 Metal 编写的自定义滤镜, 直接使用 Metal 滤镜处理性更好, 但是差距应该很小, 毕竟 Core Image 底层也是基于 Metal 进行实现。

    神经网络

    实现并运行神经网络, 用于机器学习。

    计算矩阵向量

    分解矩阵, 向量, 求解方程式 和矩阵乘法。

    光线追踪

    Metal Performance Shaders

    提示: Metal 相关的库都是基于 GPU 计算

    MetalKit

    Build Metal apps quicker and easier, using far less code. Render graphics in a standard Metal view, load textures from many sources, and work efficiently with models provided by Model I/O.

    功能

    MTKView

    MTKView 类用来显示 Metal 内容, 因为 MTKView 是 UIView 的子类, 可以方便的添加到 UIView视图层级中, 方便使用。

    模型处理

    可以将 Model / IO 库的 3D 模型加入到 Metal 内容中进行显示。

    MetalKit

    SceneKit

    Create 3D games and add 3D content to apps using high-level scene descriptions. Easily add animations, physics simulation, particle effects, and realistic physically based rendering.

    功能

    主要用于制作 3D 游戏和 3D 模型渲染, 基于 Metal 进行渲染。

    SpriteKit

    Create 2D sprite-based games using an optimized animation system, physics simulation, and event-handling support.

    功能

    主要用于制作 2D 游戏, 基于 Metal 进行渲染。

    Model I/O

    Import, export, and manipulate 3D models using a common infrastructure that integrates MetalKit, GLKit, and SceneKit.

    功能

    用来操作 3D 模型。

    Vision

    Apply computer vision algorithms to perform a variety of tasks on input images and video.

    功能

    静态图像分析

    检测人脸, 条码, 矩形等功能。和 Core Image 类似, Vision 相对 Core Image 检测返回的信息更多。

    对象追踪

    可以用来对视频或者相机的每一帧进行图像分析。

    机器学习图像分析
    • 使用 Vision 框架预处理照片,并使用 Core ML 模型对照片进行分类。
    • 使用 Core ML 模型识别照片或者视频中物体。

    根据个人测试,Vision人脸识别速度比较慢,跟Face++这种SDK差不多10倍的差距。

    Core Text

    Create text layouts using high-quality typesetting, character-to-glyph conversion, and positioning of glyphs in lines and paragraphs. Optimize font handling with automatic font substitution, and get easy access to font metrics and glyph data.

    Text Framework

    功能

    主要用于文本排版和绘制
    • UILabel , UITextField , UITextView 底层基于 Text Kit 绘制, Text Kit 基于 Core Text 实现。
    • 使用 UIKit 文本控件时, Core Animation 负责调用文本渲染, Core Text 与 Core Graphics 协作, 将文本绘制为 texture 保存在 CABackingStore里, CABackingStore 保存在 CALayer 的 contents 中用于界面渲染。
    • UIKit 文本控件默认在主线程进行文本绘制, 可以使用 Core Text 进行异步绘制, 降低主线程的消耗, 提高性能。
    • TextKit 与 CoreText 几乎相同的性能和功能, 同样支持异步绘制, 并且更容易使用, 可以优先选择 TextKit。

    Core Text Programming Guide
    Text Programming Guide for iOS

    ReplayKit

    功能

    可以用于录制屏幕画面, 实时推送到第三方直播服务器, 可以实现直播流录制上传的功能。

    PDFKit

    功能

    显示和操作 PDF 文档。

    相关文章

      网友评论

        本文标题:iOS Graphics 图形框架

        本文链接:https://www.haomeiwen.com/subject/oyxeaftx.html