gpt4 book ai didi

ios - 没有 OpenGL 的 iOS 上的硬件加速缩放

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:02:43 25 4
gpt4 key购买 nike

我目前正在为一个跨平台程序编写 iOS 后端,该程序的平台独立引擎将其所有图形按 RGBA 顺序写入 32 位像素缓冲区。不使用字母字节。图形总是不透明的,所以我不需要 alpha 混合。

在我的 drawRect 方法中绘制和缩放这些像素缓冲区到我的 CGContextRef 的最有效选项是什么?像素缓冲区通常只有 320x240 像素,需要缩放以完全填充我的 View 尺寸,例如在非 Retina iPad 上为 1024x768,在 Retina iPad 上为 2048x1536。这是一项大量工作,因此最好使用 GPU 来完成。但是,如何在不使用 OpenGL 的情况下强制 iOS 使用 GPU 进行绘制和缩放?

我试过使用 CGContextDrawImage() 但这真的很慢,可能是因为一切都是使用 CPU 完成的。

我还查看了 CIImage API,因为它们显然是 GPU 优化的,但问题是 CIImage 对象是不可变的,所以我必须不断地为我需要绘制的每一帧创建新的 CIImage 对象,这也可能会降低性能。

我当然可以使用 OpenGL,但我想获得一些反馈,了解是否有更简单的解决方案来获得我想要的东西。

感谢任何想法!

最佳答案

为了回答我自己的问题,最简单的方法是使用 CGDataProviderCreateWithData() 从像素缓冲区创建一个 CGImageRef,然后使用 CGImageCreate( )。然后可以将此 CGImageRef 设置为 View 层,如下所示:

view.layer.contents = (id) myImage;

如果 contentMode 设置为 UIViewContentModeScaleToFill,图像将自动缩放(使用 GPU 加速)以适应 UIView 的框架(这是默认值)。

感谢来自 Cocoa 邮件列表的 David Duncan 推荐这个解决方案!

关于ios - 没有 OpenGL 的 iOS 上的硬件加速缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40771750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com