问题标签 [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.
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:
swift - MTKView 刷新问题
我正在通过 MTKView 合成一组 UIImage,我看到刷新问题仅在合成阶段表现出来,但在我与应用程序交互后就会消失。换句话说,复合材料按预期工作,但在我通过放大/翻译等强制刷新之前,它们在屏幕上的外观看起来有问题。
我选择的复合方法是将每个 UIImage 转换为 MTLTexture,然后将其提交给设置为“.load”的渲染缓冲区,该缓冲区在其上渲染带有此纹理的多边形,然后对 UIImage 中的每个图像重复该过程大批。
复合材料有效,但屏幕反馈,正如您从视频中看到的那样,非常有问题。
关于可能发生什么的任何想法?任何建议,将不胜感激
一些相关的代码:
ios - MTKView currentRenderPassDescriptor 清除颜色
我正在使用 MTKView 绘图
如果可以设置此渲染通道描述符的 loadAction 和清除颜色,我不会这样做。默认透明色是否设置为黑色?
ios - MTKView 清晰显示
我想在应用程序退出活动时立即将 MTKView(或 GLKView/CAEAGLLayer)的内容设置为黑色。将其设置为清晰的颜色(例如黑色)并显示它的最快和最可靠的方法是什么?
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纹理:
objective-c - 对于不支持 MTKView 的旧操作系统设备,如何继承 MTKView 并在 NSView/UIView 上回退?
我是 Objective-C 的新手,这个兼容性问题MTKView
真的让我很困惑。
我有一个视图类,以前是这样的,
我现在正在尝试使用 Metal 来刷新MyView
. 使用MTKView
,在 macOS 上定义为
我将代码更改为
我用最新的 SDK 编译了我的代码,所以它在编译时不会有任何问题。
我的问题是,
由于
MTKView
仅在 macOS 10.11+ 上受支持,如果我在操作系统版本低于 10.11 的设备上运行此代码会发生什么情况?我认为它可能不起作用,因为这些设备在运行时一无所知MTKView
。但是,Apple 能否神奇地考虑到这个问题,并让它在我的代码编译时像 NSView 一样在旧设备上运行?如果它不适用于旧操作系统版本的设备,我该怎么做才能在没有任何兼容性问题的情况下实现这一目标?解决这种兼容性问题的常用方法是什么?它应该像这样工作,但我认为运行时继承不是一回事。
swift - MTKView :在 commandBuffer.present 上没有更多上下文的表达式类型不明确
在命令缓冲区对象上设置可绘制对象时出现编译时错误。
以下是我的函数,它是从子类的draw
方法调用的MTKView
。
我做错了什么还是 Swift 5 中有一些 API 更改?
ios - 优化将 MTLTexture 渲染到 Display 的性能?
我正在使用以下代码向显示器展示 MTLTexture。这是一个大的(~12k)纹理,需要大约 10 毫秒来绘制。由于我需要渲染至少30FPS(33 毫秒/帧),因此仅显示纹理就需要将近三分之一的计算时间。
是否有任何技巧可以提高性能并更快地绘制纹理?在 GPU 帧捕获中,它显示了大量的剔除时间。我尝试启用/禁用剔除,但我仍然看到用于剔除的时间相同。
ios - 作为 MTKViews 子视图的 UIViews 是否在 GPU 上处理/呈现?
我将 UIView 添加到 MTKView 并在 MTKViewDelegate 的 DRAW 委托方法中为 UIView 设置动画。
这个动画会由 GPU/Metal 处理吗?动画应该更流畅还是和我使用 UIView.animate 一样?