问题标签 [mtkview]

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

ios - iOS MTKView (Metal Kit view) draws image without proper scale

I don't understand why MTKView doesn't use device's scale.

I have a retina device: 2x scale, MTKView.bounds of 400x200, and CIImage size of 800x400, but it draws only left bottom quarter of the image.

Strangely drawableSize returns bounds size (400x200).

Here's the code I use:

0 投票
1 回答
1096 浏览

swift - MTKView 刷新问题

我正在通过 MTKView 合成一组 UIImage,我看到刷新问题仅在合成阶段表现出来,但在我与应用程序交互后就会消失。换句话说,复合材料按预期工作,但在我通过放大/翻译等强制刷新之前,它们在屏幕上的外观看起来有问题。

我发布了两个显示问题的视频:Glitch1Glitch2

我选择的复合方法是将每个 UIImage 转换为 MTLTexture,然后将其提交给设置为“.load”的渲染缓冲区,该缓冲区在其上渲染带有此纹理的多边形,然后对 UIImage 中的每个图像重复该过程大批。

复合材料有效,但屏幕反馈,正如您从视频中看到的那样,非常有问题。

关于可能发生什么的任何想法?任何建议,将不胜感激

一些相关的代码:

0 投票
2 回答
310 浏览

ios - MTKView currentRenderPassDescriptor 清除颜色

我正在使用 MTKView 绘图

如果可以设置此渲染通道描述符的 loadAction 和清除颜色,我不会这样做。默认透明色是否设置为黑色?

0 投票
1 回答
1300 浏览

ios - MTKView 清晰显示

我想在应用程序退出活动时立即将 MTKView(或 GLKView/CAEAGLLayer)的内容设置为黑色。将其设置为清晰的颜色(例如黑色)并显示它的最快和最可靠的方法是什么?

0 投票
1 回答
128 浏览

metal - MTKView 频繁显示乱码的 MTLTextures

我正在开发一个 MTKView 支持的绘画程序,该程序可以通过存储关键帧的 MTLTextures 数组重放绘画历史。我遇到了一个问题,有时这些 MTLTextures 的内容会被打乱。

例如,假设我想将下面的一部分图形存储为关键帧:

关键帧创建之前

在播放过程中,有时绘图会完全按照预期显示,但有时会显示如下:

在关键帧播放期间

注意图片的扭曲部分。(未失真部分构成静态背景图像,它不是相关关键帧的一部分)

我在下面描述了我从 MTKView 的 currentDrawable 创建单个 MTLTextures 的方式。由于我不会讨论颜色深度问题,这个过程可能看起来有点迂回。

我首先得到构成关键帧的屏幕子部分的 CGImage。
我使用该 CGImage 创建与 MTKView 设备相关的 MTLTexture。我将该 MTLTexture 存储到一个 MTLTextureStructure 中,该 MTLTextureStructure 存储 MTLTexture 和关键帧的边界框(稍后我将需要它)最后,我存储在 MTLTextureStructures 数组(keyframeMetalArray)中。在播放过程中,当我点击一个关键帧时,我会从这个 keyframeMetalArray 中获取它。

相关代码概述如下。

在不提供有关每次转换如何发生的细节的情况下,我想知道从架构设计的角度来看,我是否忽略了一些正在破坏我存储在 keyframeMetalArray 中的数据的东西。尝试将这些 MTLTextures 存储在 volatile 数组中可能是不明智的,但我不知道这一点。我只是认为使用 MTLTextures 将是更新内容的最快方法。

顺便说一句,当我将关键帧数组换成 UIImage.pngData 数组时,我没有显示问题,但速度要慢得多。从好的方面来说,它告诉我从 currentDrawable 到 keyframeCGImage 的初始捕获工作正常。

任何想法将不胜感激。

ps根据反馈添加一些细节:

mtlTextureToCGImage:

CGImageToMTL纹理:

0 投票
0 回答
146 浏览

objective-c - 对于不支持 MTKView 的旧操作系统设备,如何继承 MTKView 并在 NSView/UIView 上回退?

我是 Objective-C 的新手,这个兼容性问题MTKView真的让我很困惑。

我有一个视图类,以前是这样的,

我现在正在尝试使用 Metal 来刷新MyView. 使用MTKView,在 macOS 上定义为

我将代码更改为

我用最新的 SDK 编译了我的代码,所以它在编译时不会有任何问题。

我的问题是,

  1. 由于MTKView仅在 macOS 10.11+ 上受支持,如果我在操作系统版本低于 10.11 的设备上运行此代码会发生什么情况?我认为它可能不起作用,因为这些设备在运行时一无所知MTKView。但是,Apple 能否神奇地考虑到这个问题,并让它在我的代码编译时像 NSView 一样在旧设备上运行?

  2. 如果它不适用于旧操作系统版本的设备,我该怎么做才能在没有任何兼容性问题的情况下实现这一目标?解决这种兼容性问题的常用方法是什么?它应该像这样工作,但我认为运行时继承不是一回事。

0 投票
1 回答
44 浏览

swift - MTKView :在 commandBuffer.present 上没有更多上下文的表达式类型不明确

在命令缓冲区对象上设置可绘制对象时出现编译时错误。

以下是我的函数,它是从子类的draw方法调用的MTKView

我做错了什么还是 Swift 5 中有一些 API 更改?

0 投票
0 回答
117 浏览

ios - 优化将 MTLTexture 渲染到 Display 的性能?

我正在使用以下代码向显示器展示 MTLTexture。这是一个大的(~12k)纹理,需要大约 10 毫秒来绘制。由于我需要渲染至少30FPS(33 毫秒/帧),因此仅显示纹理就需要将近三分之一的计算时间。

是否有任何技巧可以提高性能并更快地绘制纹理?在 GPU 帧捕获中,它显示了大量的剔除时间。我尝试启用/禁用剔除,但我仍然看到用于剔除的时间相同。

0 投票
1 回答
201 浏览

ios - 作为 MTKViews 子视图的 UIViews 是否在 GPU 上处理/呈现?

我将 UIView 添加到 MTKView 并在 MTKViewDelegate 的 DRAW 委托方法中为 UIView 设置动画。

这个动画会由 GPU/Metal 处理吗?动画应该更流畅还是和我使用 UIView.animate 一样?

0 投票
0 回答
61 浏览

objective-c - 为什么我的 MTKview 会像顶部有黑色覆盖一样被绘制?

我在 macOS 下,创建了MTKView一个.ContentViewNSWindow

当我在我的MTKView.drawRect方法中并且当我调用NSView(Super).getRectsBeingDrawn它时,它什么也没给我!为什么?

但我的主要问题是它MTKView被画得更暗(就像它顶部有更暗的东西)

在此处输入图像描述

我必须有这样的东西:

在此处输入图像描述

知道什么会导致这种更暗的效果吗?