问题标签 [metal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
977 浏览

opencv - 将 cv::Mat 转换为 MTLTexture

我当前项目的中间步骤需要将 opencv 的 cv::Mat 转换为 MTLTexture,即 Metal 的纹理容器。我需要将 Mat 中的 Floats 存储为纹理中的 Floats;我的项目无法承受精度的损失。

这是我对这种转换的尝试。

但这似乎不起作用。它每次从 Mat 读取零,并抛出 EXC_BAD_ACCESS。我需要 MTLPixelFormatRGBA16Float 中的 MTLTexture 来保持精度。

感谢您考虑这个问题。

0 投票
1 回答
3095 浏览

ios - 将纹理数组发送到 Metal 的最佳方式

我有下面的着色器(为了长度和清晰度而删除了部分),并且想找到一个更好的方法来做到这一点。我想将一组大小可变的纹理发送到我的金属着色器。我将对顶点位置进行一些计算,然后找出要使用的纹理。

目前我刚刚对东西进行了硬编码并使用了几个 if 语句,但这很丑陋(而且我猜不快)。有什么方法可以计算i然后i用作纹理下标(如tex[i].sample)?

0 投票
1 回答
520 浏览

objective-c - Objc Cocoa MRC - Released and autoreleased objects我必须把他写下来才能看到应用程序

我正在使用 Metal API(目标 C)和 MRC(手动引用计数)编写 C++ 应用程序。我对 ObjC 的经验非常有限。大多数 Metal API 对象被定义为协议并创建为从 C 函数或其他对象的方法返回的对象(例如 MTLDevice newBufferWithLength)。要知道如何释放以这种方式创建的对象,我需要知道它们是否已设置为自动释放(例如,我不能调用 release 保留计数为 1 的自动释放对象)。问题是我在 Metal API 文档中找不到任何可以回答这个问题的描述。我只在用户指南中读过所有所谓的轻量级对象都是自动释放的。有三个自动释放对象的示例,但不确定我是否可以假设其余对象不是自动释放的。

谢谢您的帮助。

0 投票
4 回答
4904 浏览

ios - iOS代码在运行时识别金属支持?

通常,我使用下面的代码来识别设备的 iOS 版本。

以类似的方式,我正在尝试为该设备找到 Metal 支持。配备 A7(或更好)GPU 和 iOS 8.0 的 Apple 设备支持 Metal。

这是我希望我的代码工作的方式:

如何获取布尔变量的值MetalSupported

0 投票
1 回答
561 浏览

metal - MTLBuffer中存储的效率

我想从我的着色器中将图像浮点数据存储在未格式化的内存位置,而 MTLBuffer 似乎是答案。首先,这可能吗?我在 MTLBuffer 的苹果文档中看到可以访问指向缓冲区的指针。是否可以在着色器中使用该指针来填充分配的内存?其次,我想知道这个操作有多快;使用纹理操作会快速高效吗?

我问这个是因为如果确认 MTLBuffer 的访问速度与使用 MTLTexture 的操作相当,我需要重新设计我的很多代码。

0 投票
2 回答
992 浏览

ios - 如何使用 Metal API 或 Accelerate Framework 绘制裁剪的位图?

我正在实现一个裁剪视频帧的自定义视频合成器。目前我使用核心图形来做到这一点:

我如何使用 Metal API 来做到这一点?它应该快得多,对吧?使用 Accelerate 框架(特别是 vImage)怎么样?那会更简单吗?

0 投票
2 回答
4477 浏览

ios - 当 alpha 值不是 1 或 0 时,Metal MTLTexture 用黑色替换半透明区域

在使用Apple 或我自己的纹理导入器时,在软件(带有透明背景)或 Photoshop(另存为 PNG)中绘制的白色软边圆在渲染时将其半透明颜色替换为黑色.

下面是 Xcode 的 Metal 调试器的屏幕截图,您可以在发送到着色器之前看到纹理。

图片位于此处(我的排名不够高,无法嵌入)

在 Xcode、finder 中,当放入 UIImageView 时,源纹理没有环。但是在 UIImage -> CGContex -> MTLTexture 过程中的某个地方(我特别想的是 MTLTexture 部分)透明部分变暗了。

在过去的几天里,我一直在努力改变一切,但我无法弄清楚。

为了透明(哈),这是我个人的导入代码

但我不认为这是问题所在(因为它是 Apple 在 Swift 中的副本,而我使用的是他们的,没有任何区别)。

任何线索都会非常有帮助。

0 投票
1 回答
637 浏览

ios - 将 16 位浮点的 MTLTexture 转换为 cv::Mat 32 位浮点类型

我在将浮点 MTLTexture 转换回浮点 cv::Mat 时遇到了问题。

通常这不会有问题,但标准的 32 位纹理浮点在 Metal 中是不可写的。我必须使用读/写的 16 位/通道浮点纹理;一旦获得 16 位纹理数据,我就无法单独访问每个通道,因为本机浮点数是 32 位长,并且使用 16 位数据的指针运算会出错。

我考虑过预定义我自己的 16 位浮点数,但我想检查是否有其他更简单的方法来完成此操作。

0 投票
1 回答
165 浏览

ios - 在金属屏幕上的位置获取对象

我正在使用 Metal,我希望用户能够点击屏幕上的某些对象。我正在使用轻击手势识别器,所以我有一个 CGPoint,但我不知道如何在那个时候找到对象。有没有办法获取金属的屏幕坐标,或者有办法将 CGPoint 转换为金属坐标空间?

0 投票
1 回答
200 浏览

ios - Possible to turn off multibuffering/doublebuffering in Metal?

In reading about the PowerVR alpha drivers for Vulkan, they note that multibufering needs to be performed explicitly. Since Vulkan and Metal are so similar, can I actually turn off multibuffering altogether? I am willing to sacrifice throughput for low latency.

http://blog.imgtec.com/powervr/trying-out-the-new-vulkan-graphics-api-on-powervr-gpus

As a bonus, is it possible to avoid double buffering? I know racing the beam is coming back into style on the desktop but I don't know if mobile display tech supports simple single-buffering.