在“金属”中,我想出了如何生成和填充MTLTexture的mipmap级别。然而,当我呈现数千个这些mipmap纹理,并放大时,我得到了独特的闪烁。我已经使用Xcode的调试器来确定这些mipmap级别是否已被填充,因此这段代码可以工作。
let CommandBuffer = CommandQue.makeCommandBuffer()!, CommandEncoder = CommandBuffer.makeBlitCommandEncoder()!
CommandEncoder.generateMipmaps(for: BlockTextures!)
CommandEncoder.endEncoding()
CommandBuffer.commit()mipmap级别被创建和填充,但是仍然会发生闪烁,这意味着它们没有被呈现和使用。如何配置呈现管道或片段着色器,无论哪个使用mipmap,如何告诉它们使用创建的mipmap?
发布于 2020-11-18 09:22:31
在着色器中创建一个设置sampler的mip_filter对象。有关参考,请参阅金属着色语言规范中的2.9示例。
constexpr sampler s(filter::linear, mip_filter::linear)或者,创建一个MTLSamplerDescriptor。有关更多信息,请参见samplers?language=objc
https://stackoverflow.com/questions/64885628
复制相似问题