0

我是 Metal 编程新手,我想知道如何访问纹理的特定 mipmap 级别。我可以使用 BlitEncoder 来完成 mipmapping,但我不太确定如何访问特定的 miplevels 以供我使用。

帮助将不胜感激。

4

2 回答 2

1

您可以查看我的https://github.com/haawa799/MipMaper了解详细信息。

但简短的回答是 - 您使用它从MTLTexture获取原始字节:

var region = MTLRegionMake2D(0, 0, mipmapedWidth, mipmapedHeight)
var pointer = malloc(UInt(rowBytes * mipmapedHeight))
texture.getBytes(pointer, bytesPerRow: rowBytes, fromRegion: region, mipmapLevel: mipLevel)
于 2015-03-20T10:08:53.117 回答
1

如果您的应用程序在行中崩溃

texture.getBytes(pointer, bytesPerRow: rowBytes, fromRegion: region, mipmapLevel: mipLevel)

请注意代码

   self.metalLayer.framebufferOnly = YES; 

你应该设置如下

self.metalLayer.framebufferOnly = NO; 

祝你好运!

于 2016-02-03T08:28:20.303 回答