Повреждены текстуры измененного размера с металлом на экранах Retina

Я хочу нарисовать серию текстур в МЕТАЛЛИЧЕСКОМ виде, чтобы представить полное изображение. На обычном экране изображения представлены в масштабе точно 1: 1 (это означает, что текстура 100x100 пикселей будет представлена ​​в квадрате 100x100 пикселей)

Если нарисовать его на дисплее сетчатки, я получу квадрат 200x200.

Теперь может быть 2 разных подхода:

1) Сгенерируйте все изображение в квадрат 100x100 и позвольте Metal View увеличить его до квадрата 200x200 - это работает.

2) Увеличьте масштаб каждой текстуры и сгенерируйте изображение прямо в квадрат 200x200. Зачем нужен такой подход? Потому что некоторые текстуры (например, тексты) генерируются динамически и могут быть сгенерированы с лучшим разрешением. Что-то невозможное, если воспользоваться первым подходом.

К сожалению, при таком подходе вокруг каждой текстуры виден некрасивый квадрат. Я пытался поиграть с размерами, вариантами зажима и т. Д., Но не смог найти никакого решения. Любая помощь будет высоко ценится!

Изображение с обычного экрана

Изображение с обычного экрана

Изображение с экрана Retina

Изображение с экрана сетчатки


person Iron-Eagle    schedule 29.10.2019    source источник


Ответы (1)


Нашел решение. В фрагментном шейдере сэмплер текстуры был определен как:

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

вместо:

constexpr sampler s = sampler(coord::normalized, address::clamp_to_edge, filter::nearest);
person Iron-Eagle    schedule 11.11.2019