【问题标题】:MTKView, why is the color different from CAMetalLayer to screenshot?MTKView,为什么从 CAMetalLayer 到截图的颜色不同?
【发布时间】:2020-08-06 23:11:42
【问题描述】:

我发现 CAMetalLayer(从 Xcode 导出)和 MTKView 在屏幕上的颜色看起来非常不同,我使用的是RGBA16Float。可能的原因是什么?如何确保它们具有相同的颜色?

【问题讨论】:

  • 您将不得不展示您是如何创建和配置 MTKViewCAMetalLayer 的,以及它们的各种属性的默认值。
  • 请检查CAMetalLayerMTKView的isOpaque属性
  • @KenThomases 这只是使用DefaultDeviceDefault ColorSpace 创建的简单MTKView,然后是RGBA16Float colorPixelFormat。仅此而已。

标签: xcode macos metal


【解决方案1】:

这看起来像是伽马校正问题。 Xcode 可能在导出过程中使用线性光色空间,而 MTKView 在屏幕上显示时使用 sRGB 伽玛曲线。

【讨论】:

  • 您好,有没有文件提到 Xcode 在 GPU 捕获调试会话下导出 CAMetalLayer 或 Texture 时会改变颜色?
  • 对不起,我不知道。我只是根据您的示例图像的外观做出假设。它看起来真的像不同的伽马曲线。
  • 也许 MTKView 对显示器的原生色彩空间进行了一些自动色彩校正。我没有看到太多的讨论。我想可能有一种方法可以告诉 API 缓冲区有哪个颜色空间,然后 View 应该尝试解释哪个颜色空间。
  • 我看到 MTKView 有 kCGColorSpaceSRGB 和 kCGColorSpaceLinearSRGB。这很令人困惑,因为我认为 sRGB 已经处于非线性空间中。
猜你喜欢
  • 2018-11-12
  • 2016-10-24
  • 2019-12-13
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
相关资源
最近更新 更多