Uczę mojego syna programując "właściwą/trudną drogę", więc zaczynamy od C, jak prawdziwi mężczyźni :)Czy mogę napisać bajty bezpośrednio do pamięci wideo pod Linuksem, czy jest lepszy sposób na uzyskanie danych na ekranie?
Drukowanie tekstu na konsolę jest zabawne, ale wciąż pamiętam radość z przełączania mój stary tryb i386 do trybu 320x200x256 i rysowanie kilku kolorowych prostokątów ... w dniu, w którym było to tak proste, jak wywołanie int 10h
, a następnie wystarczy napisać bajty do [A000:0000]
, aby narysować piksele na ekranie.
Jednak w przypadku współczesnego systemu Linux taki niskopoziomowy dostęp do sprzętu wydaje się bardziej skomplikowany (z oczywistych względów). Na krótko spojrzałem na mmap
-ing /dev/fd0
zgodnie z opisem here - okazało się, że na moim Ubuntu 13.04 nie ma urządzenia /dev/fb0
. Przyjrzałem się również używaniu svgalib
- jednak ich przykładowy kod nie wyświetla niczego na moim monitorze.
Pytanie brzmi: czy istnieją proste sposoby uzyskania bezpośredniego dostępu do pamięci wideo we współczesnym systemie Linux, które nie wymagają dużej konfiguracji systemu i kodu standardowego? Nie musi to być dostęp pełnoekranowy - otwarcie okna X i rysowanie pikseli byłoby również w porządku, o ile odbywa się to poprzez zapisywanie danych bezpośrednio do pamięci.
Polecam naukę korzystania z SDL, a następnie pozwolenie systemowi najlepiej zdecydować, jak obsługiwać uderzanie go na ekranie. –
@ IgnacioVazquez-Abrams: Wow, dzięki za wzmiankę o SDL. Udało mi się skompilować przykładowy program SDL i wygląda dokładnie to, czego szukałem. Jeśli dodasz swój komentarz jako odpowiedź, obiecuję zaakceptować go w kilka dni pod warunkiem, że nie wspomniano nawet o frameworku awesomerów :) – Sergey
Prawdziwe kodowanie kodu programistycznego :). Albo jeszcze lepiej, prawdziwi programiści dzierży [motyle] (http://xkcd.com/378/), idź, aby twój syn był siecią motyli, zacznij od teraz, gdy jest młody! – terdon