<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SkyNullCode的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SkyNullCode</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SkyNullCode]]></copyright><item><title><![CDATA[将博客搬至优快云]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190759</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190759</guid><author>SkyNullCode</author><pubDate>Mon, 27 Dec 2021 09:16:56 +0800</pubDate><description><![CDATA[为了方便将之前分享的文章发表到优快云，特写该篇文章。
后续新写的文章，还会在掘金上更新。
为了方便将之前分享的文章发表到优快云，特写该篇文章。
后续新写的文章，还会在掘金上更新。
为了方便将之前分享的文章发表到优快云，特写该篇文章。
后续新写的文章，还会在掘金上更新。
...]]></description><category></category></item><item><title><![CDATA[Metal 框架之渲染到多个视口]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190758</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190758</guid><author>SkyNullCode</author><pubDate>Tue, 30 Nov 2021 19:46:08 +0800</pubDate><description><![CDATA[视口定义了渲染目标的一部分，绘图命令会渲染到该区域内。使用视口选择，可以为绘图命令提供多个视口，并且可以为绘图命令渲染的每个图元动态选择其中的一个视口。通过视口选择，使用更少的绘图命令，可以更轻松地将渲染合并到多个视口中。例如，

渲染立体图像或者渲染其他图像的内容到渲染目标的多个部分试时，可以使用视口选择。...]]></description><category></category></item><item><title><![CDATA[Metal 框架之渲染到多个纹理切片]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190757</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190757</guid><author>SkyNullCode</author><pubDate>Mon, 29 Nov 2021 20:02:44 +0800</pubDate><description><![CDATA[使用图层选择为顶点着色器中的每个图元选择目标切片，可以将图元渲染到纹理数组、立方体纹理或 3D 纹理的多个层(切片)中。层是单个 1D、2D 或 3D 像素块，由目标纹理中的切片和 mipmap 级别指定。加载和存储操作适用于渲染通道附件的每个切片。

当你需要将内容渲染到来自同一源数据的多个相关纹理时，例如...]]></description><category></category></item><item><title><![CDATA[Metal 框架之自定义设置渲染通道]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190755</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190755</guid><author>SkyNullCode</author><pubDate>Fri, 26 Nov 2021 20:33:51 +0800</pubDate><description><![CDATA[渲染通道是一系列渲染命令，用于绘制一组纹理。本示例执行一对渲染通道来渲染视图的内容。对于第一个通道，示例创建了一个自定义渲染，将图像渲染成纹理。这个通道是一个离屏渲染通道，因为样本渲染为普通纹理，而不是由显示子系统创建的纹理。第二个渲染通道使用 MTKView 对象提供的渲染通道描述符，来渲染和显示最终图像。...]]></description><category></category></item><item><title><![CDATA[Metal 框架之同步托管资源]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190754</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190754</guid><author>SkyNullCode</author><pubDate>Thu, 25 Nov 2021 20:42:15 +0800</pubDate><description><![CDATA[托管存储(MTLStorageMode.managed)模式只在 macOS 下有效，非 macOS 下无此存储模式，请移步阅读《 Metal 框架之资源存储模式 》。

该模式下的资源，CPU 和 GPU 都可以访问。 Metal 为每个处理器优化托管资源，但给定的资源内容有更改时，需要同步这些资源。同步托...]]></description><category></category></item><item><title><![CDATA[Metal 框架之资源存储模式]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190753</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190753</guid><author>SkyNullCode</author><pubDate>Wed, 24 Nov 2021 20:29:01 +0800</pubDate><description><![CDATA[Metal 中使用 MTLStorageMode 来指定资源的内存位置和访问权限。

MTLStorageMode 是个枚举类型，定义如下:

public enum MTLStorageMode : UInt {

  case shared = 0

  case managed = 1 //只在...]]></description><category></category></item><item><title><![CDATA[Metal 框架之设置加载和存储操作]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190752</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190752</guid><author>SkyNullCode</author><pubDate>Tue, 23 Nov 2021 19:50:49 +0800</pubDate><description><![CDATA[通过设置 MTLLoadAction 和 MTLStoreAction 属性，可以定义渲染通道加载和存储 MTLRenderPassAttachmentDescriptor 对象 的方式。为渲染目标设置适当的操作，在渲染通道的开始(加载)或结束(存储)时，可以避免昂贵且不必要的工作。

在 texture 属...]]></description><category></category></item><item><title><![CDATA[Metal 框架之从可绘制纹理中读取像素数据]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190750</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190750</guid><author>SkyNullCode</author><pubDate>Mon, 22 Nov 2021 16:30:54 +0800</pubDate><description><![CDATA[Metal 优化了纹理以供 GPU 快速访问，但不允许直接从 CPU 访问纹理的内容。当 App 需要更改或读取纹理的内容时，需要 Metal 在纹理和可访问的 CPU 内存(系统内存或使用共享存储分配的 Metal 缓冲区)之间复制数据。本文示例配置了可绘制的纹理，该纹理具备可读取权限，并将渲染像素数据从这...]]></description><category></category></item><item><title><![CDATA[Metal 框架之同步 CPU 与 GPU 工作]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190749</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190749</guid><author>SkyNullCode</author><pubDate>Sun, 21 Nov 2021 14:08:23 +0800</pubDate><description><![CDATA[通过本示例，你将了解如何管理数据依赖，并避免 CPU 和 GPU 之间的处理器等待。

本示例渲染连续的三角形，这些三角形沿着正弦波顺序排列。每一帧都会更新三角形顶点的位置，然后渲染新图像。这些动态更新的数据会产生一种运动错觉，三角形似乎沿着正弦波移动。

该示例将三角形顶点存储在 CPU 和 GPU 共...]]></description><category></category></item><item><title><![CDATA[Metal 框架之使用 Metal Debugger 查看 GPU 工作负载]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190748</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190748</guid><author>SkyNullCode</author><pubDate>Sat, 20 Nov 2021 23:23:25 +0800</pubDate><description><![CDATA[为了了解计算机是如何运行 App 或调试问题，通常要使用调试器。传统的调试器通过暂停一个线程来工作，但对基于 Metal 的 App 效果不佳。 Xcode 通过帧捕获工作流专门为 Metal 提供一个调试器。

要使用 Metal 调试器来调试 Metal App，需要捕获单个动画帧,并检查 App 生成该...]]></description><category></category></item><item><title><![CDATA[Metal 框架之深度测试]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190745</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190745</guid><author>SkyNullCode</author><pubDate>Fri, 19 Nov 2021 23:13:29 +0800</pubDate><description><![CDATA[在图形基本图元相互重叠情况下，Metal 按照画家算法来绘制图元，即按照图元提交的顺序来渲染它们。这种绘制方式一定可以得到正确的绘制结果，但是这种方法不足以渲染复杂的 3D 场景。 为了解决这个问题， 需要使用 Metal 提供的深度测试来确定每个片段在渲染时的可见性，消除隐藏的面。

深度是从观察位置到特定...]]></description><category></category></item><item><title><![CDATA[Metal 框架之渲染管线渲染图元]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190744</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190744</guid><author>SkyNullCode</author><pubDate>Thu, 18 Nov 2021 19:33:10 +0800</pubDate><description><![CDATA[在 《 Metal 框架之使用 Metal 来绘制视图内容 》中，介绍了如何设置 MTKView 对象并使用渲染通道更改视图的内容，实现了将背景色渲染为视图的内容。本示例将介绍如何配置渲染管道，作为渲染通道的一部分，在视图中绘制一个简单的 2D 彩色三角形。该示例为每个顶点提供位置和颜色，渲染管道使用该数据，...]]></description><category></category></item><item><title><![CDATA[Metal 框架之使用 MetalKit 来绘制视图内容]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190743</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190743</guid><author>SkyNullCode</author><pubDate>Wed, 17 Nov 2021 16:31:21 +0800</pubDate><description><![CDATA[在 《 Metal 框架之 MTKView 》 文章中介绍了如何使用 MTKView 来创建、配置和展示 Metal 对象，本文可作为上篇文章的补充篇，将介绍有关 Metal 渲染图形内容的基础知识。

本示例中，会创建一个 MetalKit 视图和一个渲染通道，然后指定擦除背景色，通过提交渲染通道命令来更新...]]></description><category></category></item><item><title><![CDATA[Metal 框架之创建纹理及纹理采样]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190742</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190742</guid><author>SkyNullCode</author><pubDate>Tue, 16 Nov 2021 20:14:28 +0800</pubDate><description><![CDATA[Metal 中使用纹理来绘制和处理图像，它是由像素组成的。使用2维数组的纹理来保存图像，每个元素都包含颜色数据。通过纹理映射技术将纹理绘制到几何图元上。 在片段着色器中，使用片段函数对纹理采样来为每个片段生成颜色。

Metal 中，使用 MTLTexture 对象来表示纹理。 MTLTexture 对象定...]]></description><category></category></item><item><title><![CDATA[Metal 框架之 MTKView]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190741</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190741</guid><author>SkyNullCode</author><pubDate>Mon, 15 Nov 2021 18:27:42 +0800</pubDate><description><![CDATA[MTKView 封装了 Metal 的基本功能，隐藏了配置 Metal 的一些操作，省去了开发者配置的麻烦，开发者只需要将精力花费在图形渲染即数据准备上就可以。

在 iOS, iPadOS, Mac Catalyst, tvOS中，代码定义如下：

```

class MTKView : UIView
...]]></description><category></category></item><item><title><![CDATA[创建通用 macOS 二进制文件]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190738</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190738</guid><author>SkyNullCode</author><pubDate>Sun, 14 Nov 2021 23:09:52 +0800</pubDate><description><![CDATA[原生应用比解析执行的应用程序运行更高效，因为编译器针对目标架构优化了代码。仅支持 x86_64 架构的应用程序必须通过 Rosetta 转换才能在App芯片上运行 。通用二进制文件在 Apple 芯片和 Intel 芯片的 Mac 上运行，因为它包含两种架构的可执行代码。

可以将所有编译的代码转换为通用二进...]]></description><category></category></item><item><title><![CDATA[Metal 执行 GPU 命令的流程]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190737</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190737</guid><author>SkyNullCode</author><pubDate>Sat, 13 Nov 2021 23:03:59 +0800</pubDate><description><![CDATA[阅读完本文，你将了解 Metal 是如何在 GPU 上执行命令的。

让 GPU 来执行任务是通过发送命令来实现的。
该命令可以执行绘图、并行计算或资源管理相关的操作工作。

Metal 应用程序和 GPU 之间的关系是客户端-服务器模式：


Metal 应用程序是客户端
GPU 是服务器
可以通过向 GPU...]]></description><category></category></item><item><title><![CDATA[使用 Metal 命令行来构建库]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190736</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190736</guid><author>SkyNullCode</author><pubDate>Fri, 12 Nov 2021 20:27:02 +0800</pubDate><description><![CDATA[在使用 Metal 开发过程中，为了实现功能，我们可能会自定义多个 .metal 文件。我们也可能输出 sdk 给使用方调用。

此时就会遇到如下的问题：


太多的 .metal 文件，导致 sdk 文件增多，不好管理。
暴露的 .metal 透露了一些算法逻辑之类的，而这些有可能我们不希望给使用者看到。

...]]></description><category></category></item><item><title><![CDATA[自定义 Metal 渲染视图]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190735</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190735</guid><author>SkyNullCode</author><pubDate>Thu, 11 Nov 2021 21:28:05 +0800</pubDate><description><![CDATA[我们可以通过 MetalKit 提供的 MTKView 来快速编写基于 Metal 渲染的视图，MTKView 视图把 Metal 的操作都封装了起来，一定程度上方面了开发。

但有时我们希望能够更加灵活的来控制 Metal 内容的呈现方式，这时就需要自己从头开始操作 Metal 来实现渲染流程。

本例将自定...]]></description><category></category></item><item><title><![CDATA[基于 Metal 框架的 GPU 计算]]></title><link>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190734</link><guid>https://blog.youkuaiyun.com/SkyNullCode/article/details/122190734</guid><author>SkyNullCode</author><pubDate>Wed, 10 Nov 2021 20:42:25 +0800</pubDate><description><![CDATA[GPU 的优势在于并发计算能力，在本示例中，你将学习如何使用 Apple 的新框架 Metal 来实现并发计算。
你将学会如何将用C编写的简单函数转换为 Metal Shading Language (MSL)，以便它可以在 GPU 上运行。
如何在 GPU 上创建管道和可访问的数据对象，编写 MSL 函数驱动...]]></description><category></category></item></channel></rss>