Могу ли я писать байты непосредственно в видеопамяти под Linux, или есть лучший способ получить данные на экране?

Я учу свой сын программировать "правильный/трудный путь", поэтому мы начинаем с C, как настоящие мужчины:)

Печатать текст на консоли - это весело, но я до сих пор помню радость переключения моего старого i386 на режим 320x200x256 и рисования нескольких цветных прямоугольников... в тот же день было так же просто, как вызывать int 10h, а затем вы просто пишете байты в [A000:0000] для рисования пикселей на экране.

Однако с современной Linux такой низкоуровневый доступ к аппаратным средствам представляется более сложным (по очевидным причинам). Я кратко рассмотрел mmap -ing /dev/fd0, как описано здесь, - на моем Ubuntu 13.04 нет устройства /dev/fb0. Я также посмотрел на использование svgalib - однако их примерный код ничего не отображает на моем мониторе.

Итак, вопрос: есть ли простые способы получить прямой доступ к видеопамяти в современной Linux, которая не требует большой конфигурации системы и шаблона? Он не должен быть полноэкранным доступом - открытие окна X и чертежных пикселей там было бы очень хорошо, если это было сделано путем записи данных непосредственно в память.

Ответы

Ответ 1

Вместо прямого доступа к экранной памяти (что чревато большим количеством ошибок, чем можно поверить), вы должны использовать Простой слой DirectMedia для своей графики (и многое больше!) и позволяя ОС обрабатывать рисунок на экране.