@SergeySerge11

Почему экраны имеют разрешения не кратны степени 2? Почему 1080, а 1024, если вместо умножения на 1080, можно сдвинуть 10 байт?

Почему все разрешения экранов старательно обходят кратные 2?
И не только экранов, что конкретно означает параметр разрешение, везде где он есть, в играх, к примеру, типа там пусть экран скалит как хочет в свои 1920,так как свой процессор там, а почему внутри игры на cpu gpu буферах экран не 1024,2048 буфер ширину пикселей занимает.
В чем смысл, ведь умножение на 1080 или 1980, почему не 1024 2056? Типа так сложно сделать 76 лишних пикселей? Ведь доступ к отдельному пикселю намного дольше, будет
a=array[y*w+x] и array[y< Потом всякие штуки криво работают, как дерево квадратов, иерархические буферы, так же криво делится. Векторизованные алгоритмы то же ломаются, усложняются. Потом еще есть куча хитроумных битовых алгоритмов с числами log(2,n).
Какие есть причины, это же какой-то стандарт, значит должны быть причина
  • Вопрос задан
  • 23016 просмотров
Пригласить эксперта
Ответы на вопрос 7
@TomsEkb
Дело в количестве делителей.
Если у вас есть изображение со стороной 1024, и вам нужно его уменьшить в 3 или 5 раз - поздравляю, у вас проблемы. Всё потому, что число 1024 имеет разложение 2^10 и всего 11 делителей: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024. Из них полезны нам от силы 4-5.
Если же у вас сторона изображения равна 1080, то у вас большой простор для манипуляций, т.к. 1080 имеет разложение 2^3 х 3^3 х 5, а это уже целых 32 делителя: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 18, 20, 24, 27, 30, 36, 40, 45, 54, 60, 72, 90, 108, 120, 135, 180, 216, 270, 360, 540, 1080. Из них полезны уже гораздо больше, порядка 12-15 делителей. Большим достоинством является гораздо более высокая равномерность шкалы масштабирования, мы можем уменьшить изображение в 2, 3, 4, 5, 6 раз. Мы даже можем уменьшить изображение в 1.2, 1.5, 1.8 раз - и все ещё получим целые числа: 900, 720, 600. Мы можем даже поделить нацело на 1.08 и 1.35. Число 1024 здесь очень сильно проигрывает в свободе действий.
Математика вездесуща. Всем добра.
Ответ написан
Комментировать
Zettabyte
@Zettabyte
Проф. восстановление данных ▪ Вопрос? См. профиль
Типа так сложно сделать 76 лишних пикселей?

Производители дисплеев не производят отдельные дисплеи, это невыгодно.
Вместо этого они оперируют понятием mother glass:
mother-glass.jpg
И уже эта стеклянная подложка нарезается на отдельные экраны, которые необходимы заказчику.

Размеры "материнского стекла" более-менее стандартизированы в зависимости от поколения. Известны их размеры и диагональ (примерно от 50 см до 5 м).

Это позволяет в т.ч. и заказчику расчитать сколько нужных ему дисплеев поместится на одном листе и подогнать размеры так, чтобы из одной большой матрицы получить максимум готовых изделий, минимизировав "обрезки".
Ответ написан
Комментировать
@d22b
1080 или 1980


Потому что делятся на 9 (в обеспечение формата 16:9). А ранее были 600 и 768 делящиеся на 3 (в обеспечение формата 4:3).
Ответ написан
Комментировать
@Fasterpast
Имхо, "так повелось". Раньше вообще разрешение было привязано к частоте переменного тока в розетке (грубо говоря), ведь первыми мониторами для многих были телевизоры, а где-то был PAL, где-то NTSC, там даже частота процессора бывало отличалась, и поэтому игры шли только на компе/консоли для своего региона... А дальше уже начался такой зоопарк, что никто бы не смог привести разрешения к степени двойки, даже если очень захотели бы ) И современных реалиях, когда есть мониторы почти всех мыслимых форм, мне кажется всё равно бы отказались от этого рано или поздно ибо заточенность всех графических движков под определенные числа сильно мешала бы...
Ответ написан
Комментировать
@edo1h
Умножение требует три такта процессора, сдвиг один такт. Экономия двух тактов на вычислении адреса во фреймбуфере абсолютно некритична в реальной жизни, основное время уходит на совсем другие участки кода

Update: и да, в реальном коде все равно будет умножение, так как разрешение не константа
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Я думаю что причин две.

Первое - это медленный рост быстрой оперативной памяти для видяшек.
Trident 512k была кажется у меня второй видяшкой. И цифры в конце пишут сколько было
у нее на борту. Вот. И чтобы удвоить разрешение по двум осям - память нужно умножить на 4.
Я думаю что на то время (1997 кажется) это было технически не возможно. Или дорого.

Вторая причина - ЭЛТ мониторы. У них разрашение было низкое. В топике
выше правильно писали - что это были почти телевизоры. И типичный телевизор 90х
(по стандарту Secam) имел заявленное число строк 625 а по горизонтали - там... сложно было точно посчитать.
Аналоговый сигнал ибо. А типичный монитор (у меня Samsung) был с заявленным разрешением в
паспорте 1024х768 пикселов но в этом режиме он как-то натужно работал и мерцал и
я чаще его использовал в 800х600 - там с кадрами было как-то для глаз приятнее.

Тоесть техника того времени не могла себе позволить скачкообразно поднять в 2 раза
разрешение (железная матрица внутри ЭЛТ) и техника не могла учетверить память на видяшках.

Уже в эпоху 4К и 8К мы наблюдаем рост разрешения но при этом оно тоже не удваивается
а просто умножается на коэффициентик. И это правильно потому что домашняя сеть
тоже не может поднять траф 4х чтобы вы смотрели спорт каналы в ультра-ХД или как-там его.
Ответ написан
Комментировать
@VIVAKO
Такое разрешение было выбрано в целях совместимости со старыми форматами видео вывода - VGA. 320x240, 640x480. .Масштабирование точки идёт целочисленно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы