Metal RGB 到 YUV 转换计算着色器

2023-12-13

我正在尝试编写一个 Metal 计算着色器来从 RGB 转换为 YUV,但遇到构建错误。

typedef struct {
   float3x3 matrix;
   float3   offset;
} ColorConversion;

  // Compute kernel
 kernel void kernelRGBtoYUV(texture2d<half, access::sample> inputTexture [[ texture(0) ]],
                       texture2d<half, access::write> textureY [[ texture(1) ]],
                       texture2d<half, access::write> textureCbCr [[ texture(2) ]],
                       constant ColorConversion &colorConv [[ buffer(0) ]],
                       uint2 gid [[thread_position_in_grid]])
{
  // Make sure we don't read or write outside of the texture
  if ((gid.x >= inputTexture.get_width()) || (gid.y >= inputTexture.get_height())) {
      return;
  }



  float3 inputColor = float3(inputTexture.read(gid).rgb);

  float3 yuv = colorConv.matrix*inputColor + colorConv.offset;

  half2 uv = half2(yuv.gb);

  textureY.write(half(yuv.x), gid);

  if (gid.x % 2 == 0 && gid.y % 2 == 0) {
      textureCbCr.write(uv, uint2(gid.x / 2, gid.y / 2));
  }
} 

最后一行,即写入textureCbCr会引发错误:

  no matching member function for call to 'write'

enter image description here What am I doing wrong?


根据金属着色语言规范,所有重载的第一个参数write on texture2d<>是 4 元素向量。即使您正在写入的纹理的组件少于 4 个,情况也是如此。因此,您可以通过将错误行替换为以下内容来解决此问题:

textureCbCr.write(half4(yuv.xyzz), uint2(gid.x / 2, gid.y / 2));

并且在执行写入时多余的组件将被屏蔽掉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Metal RGB 到 YUV 转换计算着色器 的相关文章

  • Swift - 本地通知不会被触发

    我正在 Swift 3 中编码 我只是想发送通知now没有任何延迟或间隔 然而 通知永远不会被触发 这是我的代码 视图控制器代码 import UserNotifications class HomeViewController UIVie
  • 如何建立辅助NSSortDescriptor排序键?

    我已成功按排序键对数据进行排序lastName 但我想知道如何排序lastName 然后由firstName 这是我用来排序的代码lastName NSSortDescriptor sortDescriptor NSSortDescript
  • 当应用程序退出活动状态时,MPMovies PlayerViewController 被解雇

    当我将 iPhone 设置为睡眠状态 切换到另一个应用程序等 然后再次返回时 之前的可见内容MPMoviePlayerViewController 提出与presentMoviePlayerViewControllerAnimated 已经
  • 是否可以使“HTML 到语音”与“文本到语音”相同?

    我有一个奇怪的要求 在我现有的应用程序中我有Text2Speech为此 我使用了AVSpeechSynthesizer 到语音文本 但现在要求发生了变化 现在我需要将 HTML 文件数据转换为文本 例如HTML2Speech 我们可以想到的
  • 是否有针对不同屏幕尺寸的单独故事板?

    基本上我已经完成了一个应用程序 我唯一的问题是 ATM 机应用程序在设计时只考虑了 4 英寸显示屏 当在 3 5 英寸模拟器上运行时 应用程序会丢失 0 5 英寸 显然 那么我的问题是 如何在 Xcode 5 中为不同的屏幕尺寸设置不同的故
  • 如何在IOS中的UIStackView中设置权重

    UIStackView与安卓类似LinearLayout但我不知道如何设置子视图的权重 假设我有一个垂直的UIStackView and 3 UIImageView就在里面 我想连续设置权重3 6 1UIImageViews 我怎么做 UI
  • UICollectionView 自动滚动到 IndexPath 处的单元格

    在加载集合视图之前 用户设置集合视图数组中的图像数量 所有单元格都不适合屏幕 我有 30 个单元格 但屏幕上只有 6 个 问题 如何在加载 UICollectionView 时自动滚动到具有所需图像的单元格 新的 编辑过的答案 将其添加到v
  • ios 用户如何取消 Facebook 登录?

    当用户到达此屏幕时 无法取消 我能做些什么 为了首先获得这个视图 我正在运行 NSMutableDictionary params NSMutableDictionary dictionaryWithObjectsAndKeys vid l
  • 将永久字符添加到 UITextField

    有没有办法将字母永久添加到 UITextField 中 用户无法删除它 我想添加一个字符 用户无法删除它 但他们仍然可以在之后添加字母 Cheers 附注这是适用于 iOS 的 A UITextField有一个名为 应该更改范围内的字符 的
  • 网站在 iPhone 屏幕右侧显示空白区域

    我遇到问题http eiglaw com http eiglaw com iPhone 屏幕右侧显示约 25 像素宽的空白 边框 我在 stackoverflow 上研究了这个问题 这些帖子是相关的 但是当我尝试提供的各种解决方案时 我无法
  • 模块未使用库演化支持进行编译;使用它意味着无法保证二进制兼容性

    最近我遇到了 SDK 的编译时警告 这是否意味着它不是使用目标设置 构建用于分发的库 构建的 你需要设置Build Libraries for Distribution在项目中Build Settings to No然后它就会消失
  • 在 WKWebView 中禁用放大手势

    我正在寻找一种方法来禁用 WKWebView 的 iOS 实现上的 捏合缩放 放大手势 OS X 有一个 magnification BOOL 属性 但在 iOS 上似乎不可用 WKWebView h if TARGET OS IPHONE
  • 如何配置 cmake 在修改非 .cpp 源文件时重新编译目标

    如果我们看下面的最小示例 cmake minimum required VERSION 3 20 project example add executable PROJECT NAME main cpp test txt 一旦可执行目标被构
  • Firebase 身份验证问题 - 通过电子邮件地址检查用户是否存在

    我在 Firebase 上创建了一个帐户 它有效 但现在我想阻止人们使用已存在的电子邮件地址创建帐户 这是代码 DatabaseManager shared userExists with email completion weak sel
  • 减少 CoreData 的调试输出?

    我正在开发一个使用 CoreData 的 iOS macOS 项目 它工作正常 但它会向控制台输出大量调试信息 这使得控制台无法使用 因为我的打印语句隐藏在所有与 CoreData 相关的内容中 我有一个非常简单的 CoreData 设置
  • 推送动画,没有阴影和停电

    我有一个简单的iOS NavigationController基于应用程序 二UICollectionViews 相继 如果元素打开 第一个合集 被点击时 第二集 将被打开 非常简单 重要的提示 Both UICollectionViews
  • 在 iOS 中,如何创建一个始终位于所有其他视图控制器之上的按钮?

    无论是否呈现模态或用户执行任何类型的转场 有没有办法让按钮在整个应用程序中 始终位于顶部 而不是屏幕顶部 有什么方法可以让这个按钮可拖动并可捕捉到屏幕上吗 我正在以苹果自己的辅助触摸作为此类按钮的示例 您可以通过创建自己的子类来做到这一点U
  • 水平 UICollectionView 单行布局

    我正在尝试使用以下命令设置简单的水平布局UICollectionView 兜圈子却没有达到预期的结果 所以任何指针或例子将不胜感激 我粘贴经常更改的代码但没有成功可能没什么意义 该图像显示两行 第一行是单个项目 尺寸正确并且在中心正确对齐
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai
  • Swift 中的 import 语句是否有相关成本?

    阅读字符串宣言 我看到一个段落 https github com apple swift blob master docs StringManifesto md batteries included关于避免Foundation不需要的时候导

随机推荐

  • jQuery - 在文本后添加元素

    我有一个带有一些链接的导航 ul class nav li a class active linkname a li li li ul 现在我需要直接在 linkname 之后添加额外的内容 如下所示 ul class nav li a c
  • 当我的应用程序被删除时呼叫状态更改网络服务

    在我的应用程序中 我使用网络服务 当用户登录到我的应用程序时 我的应用程序发送状态为 1 的请求意味着已登录 当单击注销按钮时 单击发送状态为 0 的请求 现在的问题是 当用户从设备中删除应用程序时 我的服务器中的状态保持为 1 登录 因此
  • 我创建了一个自定义 powershell .psm1 模块,但编辑后它不会更新

    我在中创建了一个自定义的powershell模块 C Program Files WindowsPowerShell Modules PennoniAppManagement目录 每当我对模块中的函数进行更改 然后将模块导入到脚本中时 更新
  • AllowHtml 不适用于 ASP.Net Mvc 3 站点

    我们尝试在 ViewModel 属性之一上使用 AllowHtml 装饰 以便避免 YSOD 从以下位置检测到潜在危险的 Request Form 值 客户端 请求文本 br 当我们尝试提交 html 文本时 例如 br 然后我们希望在控制
  • PushBots 应用程序崩溃

    我正在制作一个 Android 应用程序 它使用 PushBots 来使用推送通知服务 我想要做的是 当我收到推送通知时 我想将消息保存在 TextView 中 以便我可以拥有所有收到消息的历史记录 我做了 PushBots 网站上写的所有
  • 如何使用 Orion 在传出通知中添加自定义标头?

    我阅读了 自定义通知 部分NGSv2 规范我仍然对如何进行这项工作存有疑问 我是否必须将以下代码作为有效负载放入订阅 POST 中 httpCustom url http foo com entity id headers Content
  • 如何从文件中删除与正则表达式不匹配的行?

    我有一个大文件 如下所示 7f0c41d6 f9c6 47aa a034 d40bc629c973 csv 159890 159891 24faaed6 62ee 4175 8430 5d73b09911c8 csv 159907 5bad
  • 如何在后台启动 PhantomJS + Selenium 窗口?

    我在我的应用程序中使用 selenium phantomjs 但我想在后台启动我的应用程序 selenium 和 phantomjs 窗口 我该怎么做 I tried PhantomJSOptions options new Phantom
  • 从 S3 传输到 Google 存储 - 密钥不正确

    过去几个小时我一直在尝试设置从 S3 到我的谷歌存储桶的传输 创建传输时 我不断收到的错误是 访问密钥无效 请确保 S3 存储桶的访问密钥正确 或将存储桶权限设置为授予所有人 访问密钥和秘密都是正确的 因为它们当前在生产中用于 S3 完全访
  • 一组中的 d3 矩形干扰另一组中的矩形

    我有一个小组叫groove它有两个矩形 这些与数据无关 我也有一个群叫group其中有许多与数据绑定的矩形 在第二组中称为group只有三个数据点 但只显示两个 为什么第一个没有被渲染 我以前见过这个 但不记得如何解决 var margin
  • JavaScript 绑定问题

    这是让我感到困惑的代码片段 var timer start function var self this Why the code below doesn t write to this window setInterval self ti
  • 模板类的 CUDA 链接器错误

    在 ubuntu 上使用 CUDA 5 0 和 gcc g 4 6 在使用模板链接 CUDA 代码时遇到错误 cu array cu include cu array hpp template
  • C# - 如何将图像转换为 8 位彩色图像?

    我需要将从文件加载的 PNG 图像转换为另一个设备使用的每像素 8 位字节数组 嵌入式编程 我正在逐像素复制到使用 16 位颜色创建的新图像中 Format16bppRgb565 但是我需要Format8bpp NET Framework
  • Java 中的修剪字符

    如何在 Java 中修剪字符 e g String j joe jill Trim new char j应该 乔 吉尔 String j jack joe jill Trim jack j应该 乔 吉尔 etc 阿帕奇共享区有一个伟大的St
  • UISearchDisplayController隐藏导航栏

    我看到一个奇怪的情况 我在导航栏中放置了一个搜索栏 并将 UISearchDisplayController 与搜索栏链接起来 现在 当用户单击搜索栏时 搜索显示控制器倾向于隐藏导航栏 因此也隐藏搜索栏 为了解决这个问题 我对 UISear
  • CDI Eager Application 作用域 bean

    Since ManagedBean eager true 将被弃用 您如何创建eager 应用程序范围的 cdi bean 通过使用 CDI 扩展框架解决了这个问题 创建预选赛 Qualifier Target value ElementT
  • 将两个数据库表合二为一?

    在将关系数据库建模为库存管理系统时 我遇到了一些麻烦 目前 它只有 3 个简单的表 Product ID Name Price 收入 ID Date Quantity Product ID FK Sales ID Date Quantity
  • 如何将 Joda-Time DateTimeFormat.forStyle() 转换为 JSR 310 Java 时间?

    我正在将 Grails Joda Time 插件转换为JavaTime 我有旧的乔达时间代码 如下所示 def style switch type case LocalTime style S break case LocalDate st
  • Java:递归查找列表中的最小元素

    我会先说这是家庭作业 我只是在寻找一些指示 我一直在为这个问题绞尽脑汁 但我一生都没有明白 我们被要求找到列表中的最小元素 我知道我在这里需要一个子列表 但之后我不确定 任何指示都会很棒 谢谢 Find the minimum elemen
  • Metal RGB 到 YUV 转换计算着色器

    我正在尝试编写一个 Metal 计算着色器来从 RGB 转换为 YUV 但遇到构建错误 typedef struct float3x3 matrix float3 offset ColorConversion Compute kernel