问题标签 [metalkit]

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 回答
1173 浏览

swift - 复制金属帧缓冲纹理以供阅读

我正在尝试截取 MetalKit 视图 (MTKView) 的屏幕截图,如答案Take a snapshot of current screen with Metal in swift但它要求 MTKView 将 framebufferOnly 设置为 false,这会根据 Apple 禁用一些优化。

有没有办法复制 MTKView 纹理(例如 view.currentDrawable.texture)以便我可以读取像素?我不需要经常截图,所以禁用程序运行的整个生命周期的优化将是一种耻辱。

我尝试使用 MTLTexture.newTextureViewWithPixelFormat 和 blit 缓冲区,但我仍然得到相同的异常,即帧缓冲区仅是真的。

0 投票
1 回答
791 浏览

objective-c - MetalKit - 如何使用(MTKTextureLoader 方法)newTextureWithContentsOfURL 的选项?

我正在尝试使用 MetalKit api newTextureWithContentsOfURL 为牛创建纹理。

这是示例奶牛和我的奶牛外观。

样品牛 我的牛

我不知道这是什么原因,但我认为这个选项可能会有所帮助。

如何使用 NSDictionary 设置此选项?

0 投票
1 回答
3241 浏览

objective-c - 片段着色器功能中 float4 和 half4 的主要区别是什么?

我尝试设置 MTLPixelFormatRGBA16Float 的渲染管道和 MTKView 颜色附件像素格式。

但是,它似乎与 MTLPixelFormatBGRA8Unorm_sRGB 相同。

我只是想让渲染颜色范围更高(HDR)。

片段函数的返回类型重要吗?

我应该设置什么来实现金属的高动态范围?

0 投票
1 回答
1155 浏览

swift - 如何从 MTKView 无缝切换到 UIView 显示

我有一个 MTKView,我将其内容绘制到 UIView 中。我想在没有明显变化的情况下将显示从 MTKView 交换到 UIView。如何实现?

目前,我有

以及 layerWillDraw() 中的一个委托方法,用于清除 MTKView。

结果是我会经常看到一个帧丢失,其中没有显示任何内容。

为了干净地分离这两个任务,我还尝试了以下方法:

将新的 CALayer 添加到 UIImageView 的想法,然后清除 MTKView。在许多屏幕绘制中,我认为这会导致视图交换期间的丢帧更少,但我想要一个没有丢帧的万无一失的解决方案。基本上我所追求的是只有在 strokeUIView 准备好显示时才清除 strokeViewMetal 。任何指针将不胜感激

0 投票
2 回答
1056 浏览

swift - “使用未解析的标识符'vImage_Buffer'”的错误消息

我只需要将 .bgra8Unorm 纹理的字节转换为 RGBA 顺序并UIImage从数据中创建一个。我如下创建一个缓冲区。

但我收到错误消息

“使用未解析的标识符‘vImage_Buffer’”

“使用未解析的标识符‘vImagePermuteChannels_ARGB8888’”。

我已经导入了MetalKit。还有其他建议吗?

0 投票
0 回答
30 浏览

ios - 纹理到顶点

我有四个由 12 个顶点组成的独立正方形。我有一个纹理图像。我想将纹理添加到正方形。我补充说我的算法就像

而不是这个我想随机添加。简单地意味着纹理坐标必须是随机的意味着如果第一个正方形如上对齐第二个正方形必须对齐翻转第三个可以旋转 90 度。我希望我们可以通过着色器中的 if else 语句来为这种场景添加纹理的任何其他优化方式来做到这一点

0 投票
1 回答
423 浏览

swift - 设置 fastMathEnabled 以便在 swift 中进行精确计算

由于我在计算中不需要优化浮点算术,我如何在 swift 中将 fastMathEnabled 设置为 false?

0 投票
1 回答
1736 浏览

swift - Blend Mode in Metal

These are the two the blend-mode i used in OpenGL what is the conversion to the metal in IOS

0 投票
0 回答
405 浏览

swift - 当金属中的旋转形状发生变化时

我刚刚使用金属中的四个顶点创建了一个矩形。我只需要旋转它。所以我使用模型指标。这是我的顶点着色器。

它旋转。但是形状变了。所以我使用投影变换将节点的坐标从相机坐标转换为标准化坐标。我创建投影矩阵:

设置它的值:

init mathod 在 math.h 中的位置

向 GPU 发送命令:

更改我的顶点着色器:

但它没有用。

旋转前:在此处输入图像描述

旋转后:在此处输入图像描述

我在下面附加了我正在使用的数学函数。

我该如何解决这个问题?有什么建议吗?

0 投票
1 回答
719 浏览

ios - 使用 Metal 渲染时,Apple 如何在 UIKit 中渲染自定义线宽

关于金属线宽的问题说不能用自定义线宽在金属中画线。然而,苹果表示它所有的图形框架,如UIKit,,SpriteKitSceneKit使用Metal. 我想知道这些框架如何具有不同线宽的线条?如果它们是由三角形组成的,是否有一些例子可以说明如何做到这一点?另外,如何用不同宽度的线条绘制圆形和其他原始形状?