由于现代 macOS 设备默认选择使用缩放后的 HiDPI 分辨率,位图图像在屏幕上会变得模糊。有没有办法将位图逐像素渲染到显示屏的真实本机物理像素?任何 CoreGraphics、OpenGL 或 Metal API 都可以在不改变屏幕显示模式的情况下实现这一点?
如果你正在考虑那些convertXXXXToBacking
和朋友们,停下来。这是给你的解释。 MacBook Pro 中的典型 13 现在具有 2560x1600 像素分辨率。全新安装 macOS 后,默认建议的屏幕分辨率为 1440x900。用户可以通过系统偏好设置将其更改为 1680x1050。在 1440x900 或 1680x1050 的情况下,backingScaleFactor 恰好为 2。典型的渲染路线将首先将任何内容渲染为非物理 2880x1800 或 3360x2100 分辨率,并且操作系统/GPU 使用未知方法进行最终的重采样。
你最好的选择可能是金属。MTKView
's drawableSize
声称默认值是视图的“以原生像素为单位”的大小。我不确定这是否意味着设备像素或后备存储像素。如果是后者,你可以关闭autoResizeDrawable
并设置drawableSize
直接地。
要获取显示器的物理像素数,您可以使用我的答案here https://stackoverflow.com/questions/13859109/how-to-programmatically-determine-native-pixel-resolution-of-retina-macbook-pro/46078384#46078384.
您还可以尝试将 Core Graphics 与CGImage
该大小绘制为后备存储像素中屏幕大小的矩形。所有缩放可能会在内部被抵消。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)