ios 使用MTKTextureLoader加载图像而不翻转?

sqougxex  于 2023-05-02  发布在  iOS
关注(0)|答案(3)|浏览(160)

MTKTexureLoader newTextureWithContentsOfURL...似乎会自动翻转图像。这会导致所有包含常规UV坐标的模型和网格显示不正确。我在选项中没有看到任何东西来指定是否会发生这种情况。有没有一些方法可以使用MTKTextureLoader并保持图像的方向?

lndjwyie

lndjwyie1#

我不知道如何让MTKTextureLoader翻转你的图像,但你可以简单地翻转你的纹理坐标:

{ u, v } -> { u, 1-v }
ecbunoof

ecbunoof2#

从iOS 10开始,您可以将option传递给MTKTextureLoader初始化器。例如,从CGImage加载纹理:

let textureOut = try textureLoader.newTexture(with: cgImage, 
    options: [MTKTextureLoaderOptionOrigin: MTKTextureLoaderOriginTopLeft as NSObject])

将翻转最初在左下角具有其原点的图像。
如果你必须处理iOS〈9,你可以强迫你的用户使用Rythmic Fistman或Denn Nevera的两种方法来更新答案。

li9yvcax

li9yvcax3#

我假设MTK PreLoader根据MTL坐标系从图像创建正确的纹理:...The origin of the window coordinates is in the upper-left corner...
我认为你有三个简单的选择来处理正常方向的图像:
1.准备已翻转的图像
1.在应用程序中的MSL图形或内核函数中翻转图像(如之前第一个答案transformation matrix中所提供的那样)
1.如果您需要仅在应用程序视图中显示图像,请使用视图。layer.transfrom属性,例如:... transfrom=CATransform3DMakeRotation(CGFloat(M_PI),1.0,0.0,0.0

相关问题