- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
MTLTexture
之间的主要区别是什么?对比 CGImageRef
?我们什么时候需要使用MTLTexture
而不是 CGImageRef
(反之亦然)?
我有一个应用程序(比如视频游戏),它可以在专用表面上自行绘制所有内容。这包括 60fps 的动画(所以我需要每 16 毫秒重绘一次表面)。我不知道使用 Metal 做我的应用程序的最有效方法
最佳答案
首先,MTLTexture
来自低级图形 API。 MTLTexture
指驻留在 GPU 可访问的内存中的“图像”(不一定在 GPU 本身上)。然后,您可以编写一个使用 Metal 的程序,特别是渲染 ( MTLRenderPipelineState
) 或计算 ( MTLComputePipelineState
) 管道状态,其中包含着色器(在 GPU 上运行的程序)来读取纹理、对其进行采样、写入它们并将它们用作附件(向它们输出渲染结果)。如果您想在 CPU 上读回纹理数据,也可以将纹理复制到缓冲区 (MTLBuffer
) 和其他纹理。但是MTLTexture
主要用于GPU而不是CPU。另外,MTLTexture
不仅限于 2D,它还可以是立方体纹理,甚至是 3D 纹理。CGImage
另一方面,它来自用于 2D 用途的更高级别的 API(Core Graphics 或 Quartz 2D)。您不需要着色器或 GPU 管道来创建或修改 CGImage
s 并且有许多功能可以“开箱即用”地处理这些图像。
我想说,如果你有一个 3D 视频游戏,你可以查看 Metal,但它是一个低级别的 API,例如,设置 Metal 的过程比设置 OpenGL 复杂得多。您不能按原样将 Core Graphics 用于 3D 游戏。如果 Metal 看起来太难了,您可以查看 Apple 提供的更高级别的 API,例如 SceneKit,它们也用于游戏开发。
关于 2D 游戏开发我不能说太多,但你绝对可以使用 Metal 来开发它,它可能只是有点“矫枉过正”。
总之,您需要在复杂性和控制力之间找到平衡,并选择最适合您的。
关于ios - MTLTexture 与 CGImageRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55801617/
我发现 CGBitmapContextCreateImage() 创建了一个图像,该图像不一定总是与 CGContextClipToMask() 兼容的掩码。但是,当使用 CGImageMaskCre
以下是在上下文中绘制 UIImage 的具体方法: UIGraphicsBeginImageContextWithOptions(size, NO, 0.0f); [someUIImage drawI
这个问题让我很生气。我不知道出了什么问题。但是下面的代码把图像颠倒了。它实际上进行了垂直翻转,我不知道为什么。 UIFont *font = [UIFont fontWithName:fontName
我到处找遍了,还是没有结果。我正在线程中加载一些图像,由于 UIKit 不是线程安全的,我必须将图像存储为 CGImageRefs,但我不知道如何执行此操作。我以前没有玩过任何 Quartz 的东西,
我正在尝试从屏幕缓冲区中读取像素,我正在使用 CGDisplayCreateImage 创建一个 CGImageRef,但 CGImageGetWidth 的值> 和 CGImageGetByte
我正在为我的一个应用程序屏幕创建模糊图像,为此我使用以下代码 UIGraphicsBeginImageContext(self.view.bounds.size); [self.view.layer
所以我知道您可以使用 UIImage 从文件中获取 CGImage... UIImage *img = [UIImage imageNamed:@"name.bmp"]; [img CGImage];
好的,使用 coregraphics,我正在构建一个图像,稍后将在 CGContextClipToMask 操作中使用。它看起来像下面这样: UIImage *eyes = [UIImage
我想创建一个 CGImageRef 并绘制指向它的点。 使用什么上下文来创建空的 CGImageRef 并能够在其上进行绘制。CGContextRef 还是 CGBitmapContextRef? 如
我正在通过CGImageSource从TIFF文件创建CGImageRef,在另一种情况下通过CGDataProvider从原始位图数据创建CGImageRef,在另一种情况下通过NSImage从PD
该项目是一个具有核心图形支持的通用 C++ 插件。我无法成功将 PicHandle 转换为 CGImageRef。从 CFDataRef 保存图像会导致图像损坏。 if(pic) {
我需要使用 CGImageSourceCreateThumbnailAtIndex(...) 创建数千个 CGImage 对象。 问题是,当使用简单的 CGDataProviderCreateWith
我正在构建一个 Iphone 应用程序,需要将 UIImage 转换为 CGImageRef。我不知道该怎么做,并且希望得到一些帮助。我没有处理图像的背景...:) 最佳答案 它就像image.CGI
MTLTexture 之间的主要区别是什么?对比 CGImageRef ?我们什么时候需要使用MTLTexture而不是 CGImageRef (反之亦然)? 我有一个应用程序(比如视频游戏),它可以
我剪掉了一段 .c 代码,但我不想将其移植到 Objective-C。这个.c文件在iPhone平台上工作,但在OS X上不行。看来编译器不知道如何处理 #import 所以它不知道CGImageR
我能知道 CGPoint 是否在 CGImageRef 内吗?或者我应该将 CGImageRef 转换成其他格式? 更新 maskcontext = CGBitmapContextCreate(cur
我正在制作一个从电影中去除帧的程序。这在 iOS 7 上的 Xcode 5.0 模拟器中。我试图放入这个数组中的对象数量是 447。(似乎没有那么多)。 由于数组大小不够大导致内存泄漏,我的程序不断崩
我做了一个上下文,然后是一个渐变。之后,我将根据上下文进行绘制。然后我从上下文中收到一个渐变图像,它是正确的,我可以在调试器中看到它。但是当我尝试获取特定值的像素颜色时,它是不正确的。感谢您的帮助,谢
我正在考虑优化从 CGImage 获取像素数据的例程。目前这样做的方式(非常低效)是创建一个新的 CGContext,将 CGImage 绘制到上下文中,然后从上下文中获取数据。 我有以下优化例程来处
我正在用核心图形绘制图像,而不是我想将它用作另一个图像的 mask ,但只是得到清晰的矩形图像。 看看我的裁剪功能有什么问题? UIGraphicsBeginImageContext(CGSi
我是一名优秀的程序员,十分优秀!