我想在METAL视图中绘制一系列纹理,以呈现完整的图像。在常规屏幕上,图像以正好1:1的比例呈现(意味着100x100像素的纹理将以100x100像素的正方形呈现)
在视网膜显示器上绘制,实际上会给我200x200的正方形。
现在,可能有两种不同的方法:
1)将整个图像生成为100x100正方形,然后让Metal View将其放大到200x200正方形-可以。
2)放大每个纹理并直接将图像生成为200x200正方形。为什么要采用这种方法?因为某些纹理(如文本)是动态生成的,并且可以以更好的分辨率生成。如果您采用第一种方法,那是不可能的。
不幸的是,在这种方法中,每个纹理周围都可以看到一些难看的正方形。我尝试使用尺寸,夹具选项等,但找不到任何解决方案。任何帮助将不胜感激!
来自常规屏幕的图像
来自视网膜屏幕的图像
找到了解决方案。在片段着色器中,纹理采样器定义为:
constexpr sampler s = sampler(coord::normalized, address::repeat, filter::nearest);
而不是:
constexpr sampler s = sampler(coord::normalized, address::clamp_to_edge, filter::nearest);