视网膜屏幕上带有金属的已调整大小的纹理损坏

问题描述 投票:0回答:1

我想在METAL视图中绘制一系列纹理,以呈现完整的图像。在常规屏幕上,图像以正好1:1的比例呈现(意味着100x100像素的纹理将以100x100像素的正方形呈现)

在视网膜显示器上绘制,实际上会给我200x200的正方形。

现在,可能有两种不同的方法:

1)将整个图像生成为100x100正方形,然后让Metal View将其放大到200x200正方形-可以。

2)放大每个纹理并直接将图像生成为200x200正方形。为什么要采用这种方法?因为某些纹理(如文本)是动态生成的,并且可以以更好的分辨率生成。如果您采用第一种方法,那是不可能的。

不幸的是,在这种方法中,每个纹理周围都可以看到一些难看的正方形。我尝试使用尺寸,夹具选项等,但找不到任何解决方案。任何帮助将不胜感激!

来自常规屏幕的图像

Image from regular screen

来自视网膜屏幕的图像

Image from retina screen

macos metal retina-display
1个回答
0
投票

找到了解决方案。在片段着色器中,纹理采样器定义为:

constexpr sampler s = sampler(coord::normalized, address::repeat, filter::nearest);

而不是:

constexpr sampler s = sampler(coord::normalized, address::clamp_to_edge, filter::nearest);
© www.soinside.com 2019 - 2024. All rights reserved.