Как графический процессор узнает адрес каждого пикселя на экране? Если да, то как он справляется с изображениями высокого разрешения?

748
CasualGenius

Я знаю, как работают растровые изображения и как используются пиксели (двоичные 0 или 1). Я также знаю о RGB, но меня интересует то, как графические процессоры узнают адрес каждого пикселя на экране высокого разрешения и как графический процессор отправляет информацию в пиксели. Кто-нибудь может ответить на это?

0
http://stackoverflow.com/questions/7457391/how-does-a-computer-draw-the-screen Вы также можете узнать больше о буферах кадров, перейдя по ссылке в ответе. Это довольно интересные вещи. DrZoo 8 лет назад 0
Он вообще не «знает» адрес пикселя, ему это не нужно. Все, что ему нужно сделать, это сообщить монитору формат данных, размер экрана, который он знает, а затем отправить множество групп байтов, в которых указано, какой цвет следующий. Это сделано в виде ряда данных, и монитор должен затем декодировать данные в сигналы, ожидаемые панелью. Вы должны посмотреть, как работают CRT-мониторы, новые мониторы работают схожим образом с использованием цифровых данных. Mokubai 8 лет назад 0

2 ответа на вопрос

0
Ale..chenski

У графического процессора есть часть памяти, предназначенная для вывода видео. Каждый пиксель имеет точный адрес. Графический процессор отображает изображения и помещает их в этот видеобуфер. Затем выделенный аппаратный блок «сканирует» эту память и передает содержимое в видеопорт (VGA, HDMI, DVI и т. Д.). Монитор получает и отображает эту информацию. Но разве эта информация не доступна свободно на некоторых вики?

0
hurikhan77

Это делается так же просто, как копирование всего буфера памяти в выходной разъем с частотой обновления. То есть на стандартном мониторе, подключенном к DVI, он будет передавать полные кадры 60 раз в секунду с разрешением 1920x1080 пикселей и 24 битами на пиксель (глубина 8GB RGB). Это много данных и требует качественных, коротких кабелей.

Внутренне это может стать намного сложнее. Обычно видеопамять содержит 2 или 3 буфера данных изображения (двойная или тройная буферизация, чтобы уменьшить разрыв, что по сути означает, что буфер, отправляемый на выходной разъем, не изменяется драйверами ОС).

И это может стать еще более сложным: выходной разъем может быть аналоговым, что означает наличие ЦАП, который преобразует каждый сигнал в аналоговые сигналы. Либо ОЗУ может использовать более высокую битовую глубину, чем монитор (10 бит на цвет = 30 бит на пиксель), графические карты могут использовать временное сглаживание, когда устройство вывода имеет меньшую битовую глубину (поэтому ошибка в 2 бита распространяется на следующую кадр, который может привести к заметному, небольшому шуму, но дает лучшую цветную заливку).

И даже более сложный: некоторые графические процессоры не размещают свою память таким же образом, как она отображается на мониторе (строки пикселей сверху слева направо вниз), а скорее размещают свою память в ячейках (прямоугольники данных изображения) - это имеет подлежит преобразованию, но может привести к более высокой производительности доступа к VRAM, поскольку одновременный доступ с графического процессора, процессора и процессора сигналов лучше распределен по отношению друг к другу.

Итак, в общих чертах это очень просто: данные просто копируются из буфера ОЗУ в выходной соединитель попиксельно, большую часть времени изменяя буфер изображения между копиями при каждой отправке полного кадра. Монитор следует тому же шаблону синхронизации и рисует пиксели. В каждом кадре таймеры будут повторно синхронизироваться, поэтому монитор запускается в верхнем левом углу.

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