SkyNullCode
码龄11年
求更新 关注
提问 私信
  • 博客:100,043
    社区:2,360
    102,403
    总访问量
  • 46
    原创
  • 15
    粉丝
  • 86
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
加入CSDN时间: 2015-09-10

个人简介:专注于iOS开发,有Windows、Mac开发经验。对图形图像与音视频编解码感兴趣。 audio_video_render 会持续更新一些干货资源,欢迎大家关注。有想了解的技术也可以给我留言,我会尽量帮你解决。

博客简介:

SkyNullCode的博客

查看详细资料
个人成就
  • 获得16次点赞
  • 内容获得2次评论
  • 获得92次收藏
  • 博客总排名1,647,212名
创作历程
  • 25篇
    2021年
  • 1篇
    2018年
  • 1篇
    2017年
  • 3篇
    2016年
  • 18篇
    2015年
成就勋章
TA的专栏
  • Mac OS X 开发
    14篇
  • Metal
    20篇
  • MacOS
    19篇
  • iOS
    20篇
  • 图形渲染
    1篇
  • 播放器
    1篇
  • 颜色空间
    1篇
  • Windows
    1篇
  • OSX
    16篇
  • OC
    14篇
  • Swift
    2篇
  • C++
    2篇
  • OpenGL
    1篇
  • OpenCV
  • DuiLib
  • Data structure and algorithm
  • 开源备忘
    1篇

TA关注的专栏 2

TA关注的收藏夹 0

TA关注的社区 4

TA参与的活动 0

兴趣领域 设置
  • 数据结构与算法
    排序算法推荐算法
  • 人工智能
    opencvcaffetensorflowmxnetpytorchnlpscikit-learn聚类集成学习迁移学习分类回归
创作活动更多

芯创视界・嵌入式视频创作征集大赛

嵌入式工程的价值,藏在每一次硬件调试、代码迭代与项目落地之中。 让我们因热爱相聚,用镜头与一众开发者互通心得、彼此启发,记录下探索的每一步,分享思路与经验。 让更多人看见嵌入式开发的魅力,也让每一次创作成为推动技术传播与社区成长的力量。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0d445ffce72b42f997aaf1b030a652aa.png#pic_center)

28人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

Metal 框架之资源存储模式

Metal 中使用 MTLStorageMode 来指定资源的内存位置和访问权限。MTLStorageMode 是个枚举类型,定义如下:public enum MTLStorageMode : UInt { case shared = 0 case managed = 1 //只在...
原创
博文更新于 2022.02.07 ·
1247 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Metal 框架之设置加载和存储操作

通过设置 MTLLoadAction 和 MTLStoreAction 属性,可以定义渲染通道加载和存储 MTLRenderPassAttachmentDescriptor 对象 的方式。为渲染目标设置适当的操作,在渲染通道的开始(加载)或结束(存储)时,可以避免昂贵且不必要的工作。在 texture 属...
原创
博文更新于 2022.02.07 ·
737 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Metal 框架之同步托管资源

托管存储(MTLStorageMode.managed)模式只在 macOS 下有效,非 macOS 下无此存储模式,请移步阅读《 Metal 框架之资源存储模式 》。该模式下的资源,CPU 和 GPU 都可以访问。 Metal 为每个处理器优化托管资源,但给定的资源内容有更改时,需要同步这些资源。同步托...
原创
博文更新于 2022.02.07 ·
484 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Metal 框架之渲染到多个纹理切片

使用图层选择为顶点着色器中的每个图元选择目标切片,可以将图元渲染到纹理数组、立方体纹理或 3D 纹理的多个层(切片)中。层是单个 1D、2D 或 3D 像素块,由目标纹理中的切片和 mipmap 级别指定。加载和存储操作适用于渲染通道附件的每个切片。当你需要将内容渲染到来自同一源数据的多个相关纹理时,例如...
原创
博文更新于 2022.02.07 ·
869 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Metal 框架之自定义设置渲染通道

渲染通道是一系列渲染命令,用于绘制一组纹理。本示例执行一对渲染通道来渲染视图的内容。对于第一个通道,示例创建了一个自定义渲染,将图像渲染成纹理。这个通道是一个离屏渲染通道,因为样本渲染为普通纹理,而不是由显示子系统创建的纹理。第二个渲染通道使用 MTKView 对象提供的渲染通道描述符,来渲染和显示最终图像。...
原创
博文更新于 2022.02.07 ·
731 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Metal 框架之渲染到多个视口

视口定义了渲染目标的一部分,绘图命令会渲染到该区域内。使用视口选择,可以为绘图命令提供多个视口,并且可以为绘图命令渲染的每个图元动态选择其中的一个视口。通过视口选择,使用更少的绘图命令,可以更轻松地将渲染合并到多个视口中。例如,渲染立体图像或者渲染其他图像的内容到渲染目标的多个部分试时,可以使用视口选择。...
原创
博文更新于 2022.02.07 ·
622 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

将博客搬至CSDN

为了方便将之前分享的文章发表到CSDN,特写该篇文章。后续新写的文章,还会在掘金上更新。为了方便将之前分享的文章发表到CSDN,特写该篇文章。后续新写的文章,还会在掘金上更新。为了方便将之前分享的文章发表到CSDN,特写该篇文章。后续新写的文章,还会在掘金上更新。...
原创
博文更新于 2022.02.07 ·
271 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

自定义 Metal 渲染视图

我们可以通过 MetalKit 提供的 MTKView 来快速编写基于 Metal 渲染的视图,MTKView 视图把 Metal 的操作都封装了起来,一定程度上方面了开发。但有时我们希望能够更加灵活的来控制 Metal 内容的呈现方式,这时就需要自己从头开始操作 Metal 来实现渲染流程。本例将自定...
原创
博文更新于 2022.01.28 ·
770 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

使用 Metal 命令行来构建库

在使用 Metal 开发过程中,为了实现功能,我们可能会自定义多个 .metal 文件。我们也可能输出 sdk 给使用方调用。此时就会遇到如下的问题:太多的 .metal 文件,导致 sdk 文件增多,不好管理。暴露的 .metal 透露了一些算法逻辑之类的,而这些有可能我们不希望给使用者看到。...
原创
博文更新于 2022.01.28 ·
1345 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Metal 执行 GPU 命令的流程

阅读完本文,你将了解 Metal 是如何在 GPU 上执行命令的。让 GPU 来执行任务是通过发送命令来实现的。该命令可以执行绘图、并行计算或资源管理相关的操作工作。Metal 应用程序和 GPU 之间的关系是客户端-服务器模式:Metal 应用程序是客户端GPU 是服务器可以通过向 GPU...
原创
博文更新于 2022.01.28 ·
632 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Metal 框架之使用 MetalKit 来绘制视图内容

在 《 Metal 框架之 MTKView 》 文章中介绍了如何使用 MTKView 来创建、配置和展示 Metal 对象,本文可作为上篇文章的补充篇,将介绍有关 Metal 渲染图形内容的基础知识。本示例中,会创建一个 MetalKit 视图和一个渲染通道,然后指定擦除背景色,通过提交渲染通道命令来更新...
原创
博文更新于 2022.01.28 ·
999 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Metal 框架之渲染管线渲染图元

在 《 Metal 框架之使用 Metal 来绘制视图内容 》中,介绍了如何设置 MTKView 对象并使用渲染通道更改视图的内容,实现了将背景色渲染为视图的内容。本示例将介绍如何配置渲染管道,作为渲染通道的一部分,在视图中绘制一个简单的 2D 彩色三角形。该示例为每个顶点提供位置和颜色,渲染管道使用该数据,...
原创
博文更新于 2022.01.28 ·
762 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Metal 框架之使用 Metal Debugger 查看 GPU 工作负载

为了了解计算机是如何运行 App 或调试问题,通常要使用调试器。传统的调试器通过暂停一个线程来工作,但对基于 Metal 的 App 效果不佳。 Xcode 通过帧捕获工作流专门为 Metal 提供一个调试器。要使用 Metal 调试器来调试 Metal App,需要捕获单个动画帧,并检查 App 生成该...
原创
博文更新于 2022.01.28 ·
1796 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

常用图形渲染API简介

目前比较常用的图形渲染API有如下几种:Direct3DOpenGLVulkanMetal下面会详细的介绍各种API的特点Direct3DDirect3D(简称:D3D)是微软公司在Microsoft Windows操作系统上所开发的一套3D绘图编程接口,是...
原创
博文更新于 2022.01.28 ·
3538 阅读 ·
3 点赞 ·
0 评论 ·
12 收藏

基于 Metal 框架的 GPU 计算

GPU 的优势在于并发计算能力,在本示例中,你将学习如何使用 Apple 的新框架 Metal 来实现并发计算。你将学会如何将用C编写的简单函数转换为 Metal Shading Language (MSL),以便它可以在 GPU 上运行。如何在 GPU 上创建管道和可访问的数据对象,编写 MSL 函数驱动...
原创
博文更新于 2022.01.28 ·
1388 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Metal 框架之同步 CPU 与 GPU 工作

通过本示例,你将了解如何管理数据依赖,并避免 CPU 和 GPU 之间的处理器等待。本示例渲染连续的三角形,这些三角形沿着正弦波顺序排列。每一帧都会更新三角形顶点的位置,然后渲染新图像。这些动态更新的数据会产生一种运动错觉,三角形似乎沿着正弦波移动。该示例将三角形顶点存储在 CPU 和 GPU 共...
原创
博文更新于 2022.01.28 ·
1265 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Metal 框架之从可绘制纹理中读取像素数据

Metal 优化了纹理以供 GPU 快速访问,但不允许直接从 CPU 访问纹理的内容。当 App 需要更改或读取纹理的内容时,需要 Metal 在纹理和可访问的 CPU 内存(系统内存或使用共享存储分配的 Metal 缓冲区)之间复制数据。本文示例配置了可绘制的纹理,该纹理具备可读取权限,并将渲染像素数据从这...
原创
博文更新于 2022.01.28 ·
915 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

创建通用 macOS 二进制文件

原生应用比解析执行的应用程序运行更高效,因为编译器针对目标架构优化了代码。仅支持 x86_64 架构的应用程序必须通过 Rosetta 转换才能在App芯片上运行 。通用二进制文件在 Apple 芯片和 Intel 芯片的 Mac 上运行,因为它包含两种架构的可执行代码。可以将所有编译的代码转换为通用二进...
原创
博文更新于 2022.01.28 ·
2276 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Metal 框架之 MTKView

MTKView 封装了 Metal 的基本功能,隐藏了配置 Metal 的一些操作,省去了开发者配置的麻烦,开发者只需要将精力花费在图形渲染即数据准备上就可以。在 iOS, iPadOS, Mac Catalyst, tvOS中,代码定义如下:```class MTKView : UIView...
原创
博文更新于 2022.01.28 ·
1504 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Metal 框架之深度测试

在图形基本图元相互重叠情况下,Metal 按照画家算法来绘制图元,即按照图元提交的顺序来渲染它们。这种绘制方式一定可以得到正确的绘制结果,但是这种方法不足以渲染复杂的 3D 场景。 为了解决这个问题, 需要使用 Metal 提供的深度测试来确定每个片段在渲染时的可见性,消除隐藏的面。深度是从观察位置到特定...
原创
博文更新于 2022.01.28 ·
759 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多