Ответ 1
Вместо прямого доступа к экранной памяти (что чревато большим количеством ошибок, чем можно поверить), вы должны использовать Простой слой DirectMedia для своей графики (и многое больше!) и позволяя ОС обрабатывать рисунок на экране.
Я учу свой сын программировать "правильный/трудный путь", поэтому мы начинаем с C, как настоящие мужчины:)
Печатать текст на консоли - это весело, но я до сих пор помню радость переключения моего старого i386 на режим 320x200x256 и рисования нескольких цветных прямоугольников... в тот же день было так же просто, как вызывать int 10h
, а затем вы просто пишете байты в [A000:0000]
для рисования пикселей на экране.
Однако с современной Linux такой низкоуровневый доступ к аппаратным средствам представляется более сложным (по очевидным причинам). Я кратко рассмотрел mmap
-ing /dev/fd0
, как описано здесь, - на моем Ubuntu 13.04 нет устройства /dev/fb0
. Я также посмотрел на использование svgalib
- однако их примерный код ничего не отображает на моем мониторе.
Итак, вопрос: есть ли простые способы получить прямой доступ к видеопамяти в современной Linux, которая не требует большой конфигурации системы и шаблона? Он не должен быть полноэкранным доступом - открытие окна X и чертежных пикселей там было бы очень хорошо, если это было сделано путем записи данных непосредственно в память.
Вместо прямого доступа к экранной памяти (что чревато большим количеством ошибок, чем можно поверить), вы должны использовать Простой слой DirectMedia для своей графики (и многое больше!) и позволяя ОС обрабатывать рисунок на экране.