Metal
Quinn士魁
90后、公司上海、目前工作在北京,熟悉Swift、Objective-C,了解H5。
目前共参与开发过5款IOS端APP;包含直播Live功能、单词游戏功能、视频录制功能、视频滤镜后期处功能、物流管理功能、购物功能;积累了GPUImage图形及音视频处理、数据库存储、UI、多线程、数据解析、性能优化等经验。
接下来会继续深入GPUImage、OpenGL ES、H5等方面的学习研究;希望有共同爱好的人一起探讨、相互学习。邮箱 xoxo_X@126.com、QuinnX@126.com
展开
-
Metal系列:录
心中永远对图形图像充满向往,尊敬!Metal 与 Core Graphics、OpenGL 都是与硬件有关联的底层渲染接口Metal与OpenGL ES 是在GPU中处理CoreGraphics 实在CPU中处理,CPU特点是适合复杂的串行计算,与其特定的物理结构有关GPU特点是简单的并行计算,与其特定的物理结构有关通常由CPU 掉起GPU,GPU执行渲染,最后显示在屏幕上,CPU 掉起GPU,这一步在OpenGL中比较耗时,涉及到了上下文的环境与数据拷贝,Metal则是改善了这种状况。原创 2018-10-29 22:04:13 · 354 阅读 · 0 评论 -
Metal日记:使用步骤指南
本文参考资料: https://juejin.im/post/5b1e8fade51d45068f65d6e8#heading-14 https://xiaozhuanlan.com/topic/0459813726 https://developer.apple.com/videos/play/wwdc2018/604/ https://github.com/quinn0809/GPUM...原创 2019-01-14 18:11:20 · 788 阅读 · 0 评论 -
Metal 系列二:GPU Devices--创建参数缓冲区\间接命令缓冲区\资源堆和围栏\深度和模板状态\查询可编程样品位置\光栅订单组支持
Creating Argument Buffers 创建参数缓冲区为特定的参数数组创建新的参数编码器。func makeArgumentEncoder(arguments: [MTLArgumentDescriptor]) -> MTLArgumentEncoder?Creates a new argument encoder for a specific array of argum...原创 2018-11-03 00:03:08 · 975 阅读 · 1 评论 -
Metal 系列二:GPU Devices--创建纹理和采样器Creating Textures and Samplers
使用包含纹理状态的私有存储创建纹理对象。func makeTexture(descriptor: MTLTextureDescriptor) -> MTLTexture?Creates a texture object with privately owned storage that contains texture state.Required.IOSurface使用包含纹理...原创 2018-11-02 23:55:34 · 890 阅读 · 0 评论 -
Metal 系列二:GPU Devices--缓冲区Creating Buffers
Fill buffers with arbitrary data structures that you design and send as arguments to your shader functions on the GPU.使用您设计的任意数据结构填充缓冲区,并将其作为参数发送到GPU上的着色器函数。分配给定长度的新零填充缓冲区。func makeBuffer(length: I...原创 2018-11-02 23:52:37 · 463 阅读 · 0 评论 -
Metal 系列二:GPU Devices--Metal的内存分配情况
查询内存可用性返回此设备可以使用多少内存(以字节为单位)的近似值。var recommendedMaxWorkingSetSize: UInt64Returns an approximation of how much memory, in bytes, this device can use with good performance.Required.此进程为此进程分配的所有资源...原创 2018-11-02 23:50:10 · 639 阅读 · 0 评论 -
Metal 系列二:GPU Devices--渲染管线Render Pipeline
创建渲染管线 Creating a Render Pipeline异步创建并返回渲染管道状态对象。func makeRenderPipelineState(descriptor: MTLRenderPipelineDescriptor, completionHandler: MTLNewRenderPipelineStateCompletionHandler)Asynchronously c...原创 2018-11-02 23:46:36 · 858 阅读 · 0 评论 -
Metal系列四:Demo清屏加三角形
首先贴出Apple的官方Demo:地址https://developer.apple.com/documentation/metal/devices_and_commands这里有个我总结的流程图:首先由个Metal的准备阶段,在准备阶段中,我们准备以下内容:1.MTLDevice 获取默认设备2.MTLCommandQueue 命令队列1.声明全局变量{ id&l...原创 2018-11-07 01:24:34 · 930 阅读 · 0 评论 -
Metal 系列三:Command Setup 设置命令结构
为了使用Metal在GPU上执行我们自定义的代码,我们需要一些命令,设置基础架构。了解Metal是如何在GPU上工作的Metal 是用于操作GPU的,为了要让GPU为你工作,你必须发出一些命令。你的App可以让GPU执行绘图,并行计算,资源管理。Metal和GPU可以理解为 客户端 — 服务器模式:1.使用Metal的APP为客户端2.GPU是服务器3.可以向GPU发出请求4.GPU...翻译 2018-11-03 23:50:33 · 638 阅读 · 1 评论 -
Metal 系列二:GPU Devices--Get Shader Library
获取着色器创建一个新库,其中包含存储在应用程序默认Metal库中的函数func makeDefaultLibrary() -> MTLLibrary?Creates a new library that contains the functions stored in the app’s default Metal library.Required.创建一个包含存储在指定包中的...原创 2018-11-01 23:34:53 · 431 阅读 · 0 评论 -
Metal 系列二:GPU Devices--(命令) Command
创建命令队列创建并返回命令提交队列。func makeCommandQueue() -> MTLCommandQueue?Creates and return a command submission queue.Required.创建并返回具有最大未完成命令缓冲区数的命令提交队列func makeCommandQueue(maxCommandBufferCount: In...原创 2018-11-01 22:59:21 · 450 阅读 · 0 评论 -
Metal 系列二:GPU Devices--(查询特性)Querying Features
//设备功能集定义特定的平台,硬件和软件配置enum MTLFeatureSetThe device feature sets that define specific platform, hardware, and software configurations.//返回一个布尔值,指示设备是否支持特定功能集。func supportsFeatureSet(MTLFeatureSet)...原创 2018-11-01 22:30:54 · 1713 阅读 · 0 评论 -
Metal 系列二:GPU Devices--(查询属性)Querying Properties
//一个布尔值,指示设备是否配置为无头var isHeadless: BoolA Boolean value that indicates whether a device is configured as headless.Required.//一个布尔值,指示设备是否为低功耗var isLowPower: BoolA Boolean value that indicates whe...原创 2018-11-01 22:17:33 · 440 阅读 · 0 评论 -
Metal 系列二:GPU Devices--(获取硬件)Acquiring Devices
了解如何为特定类型的iOS和tvOS设备开发Metal应用程序,如果你想开发Metal的APP最好要熟悉不同CPU的特性。前文我们提到,MTLDevice 协议的作用:1.可以在GPU设备中查询是否对APP的Metal提供特殊功能。2.使用GPU设备发出所有Metal commend(命令)3.不要自己实现此协议,相反,要从上文我们介绍的MTLCreateSystemDefaultDevi...原创 2018-11-01 22:03:41 · 899 阅读 · 0 评论 -
Metal 系列二:GPU Devices
获取设备默认的GPU设备:代码:guard let device = MTLCreateSystemDefaultDevice() else { fatalError( "Failed to get the system's default Metal device." ) }为了使用Metal framework,首先应该获取GPU设备,app中所有和Metal有联系的对象,...原创 2018-10-29 23:48:32 · 1728 阅读 · 0 评论 -
Metal系列一:Framework框架介绍
用于3D绘图和高效并发处理。OpenGL 的跨平台特性,导致了其没有办法充分发挥GPU的性能,冗余的代码太多,更多的API需要维护,Metal就是为解决这一目的。Metal 同其他框架协同工作,MetalKit可以简化获取屏幕Metal内容的步骤,使用Metal Performance Shaders 可以自定义函数,或者直接使用现有的函数库。主题:GPU Devices :GPU设备C...原创 2018-10-29 23:07:47 · 1026 阅读 · 0 评论 -
打造自己的GPUImage
学习路线与方法本人16年,因直播的需要,开始接触GPUImage、然后学习OpenGL ES;OpenGL ES的门槛比较高,如果没有人带,入门就比较费劲;很长一段时间,大概有半年,有时明明觉得看的都懂了,过一段时间又会忘记,或者在实际应用中就整个垮掉;在iOS的日常开发中,由于我自工作以来接触到的App都是直播类或者相机类产品,所以对图像知识有所了解,但又一知半解,难以深入,后来在开发的过...原创 2019-07-12 14:59:59 · 723 阅读 · 0 评论