2013-07-15 11 views
15

Ben "sağ/zor yoldan" oğlum programlama öğretiyorum, bu yüzden gerçek erkekler :) gibi C ile başlıyoruzBaytları Linux altında video belleğe doğrudan yazabilir miyim, yoksa veriyi ekrana almanın daha iyi bir yolu var mı?

konsoluna

Baskı metin eğlenceli, ama yine de anahtarlama verdiği sarhoşluğu hatırlamak Benim eski i386 320x200x256 moduna ve birkaç renkli dikdörtgenler çizim ... geri gün içinde int 10h çağırmak kadar kolay oldu ve sonra ekranda piksel çizmek için [A000:0000] sadece bytes yazabilirsiniz. Bununla birlikte, modern Linux ile, donanıma bu kadar düşük seviyeli erişim daha açık (daha açık nedenlerle) gibi görünmektedir. -ing /dev/fd0 'da here açıklandığı gibi kısaca baktım - Ubuntu 13.04'ümde /dev/fb0 cihaz yok. Ayrıca svgalib'u kullanarak baktım - ancak örnek kodları monitörümde hiçbir şey göstermiyor.

Buradaki soru şudur: modern Linux'ta çok fazla sistem konfigürasyonu ve boilerplate kodu gerektirmeyen video belleğe doğrudan erişmenin kolay yolları var mı? Tam ekran erişim olmak zorunda değildir - bir X penceresinin açılması ve çizim pikselleri doğrudan belleğe yazma yoluyla yapıldığı sürece iyi olur.

+1

SDL'yi nasıl kullanacağınızı öğrenmenizi ve daha sonra sistemin ekrana sığmasını nasıl ele alacağına karar vermesini öneririm. –

+0

@ IgnacioVazquez-Abrams: Wow, SDL'den bahsetmeye teşekkürler. Örnek bir SDL programını derleyebildim ve tam olarak aradığım şey gibi görünüyor. Yorumunuzu cevap olarak eklerseniz, awesomer çerçevesinin bile belirtilmemesi koşuluyla birkaç gün içinde kabul edeceğime söz veriyorum :) – Sergey

+0

Gerçek programcılar kod derlemesi :). Ya da daha da iyisi, gerçek programcılar [kelebekleri] (http://xkcd.com/378/) kullanırlar, oğlunuza kelebek ağı getirin, şimdi onu gençleştirin! – terdon

cevap

12

Doğrudan ekran belleğine erişmek yerine (ki bunlardan daha fazla tuzak ile dolu olana inanabilirsiniz), grafikleriniz için Simple DirectMedia Layer kullanmayı (ve çok daha fazlasını!) Ve işletim sisteminin ekrana çizmesine izin vermelisiniz.

+0

Anlaşmalı. SDL gitmenin yoludur. – Joe

+3

Temel bilgiler için video belleğin ne olduğunu ve temel düzeyde nasıl çalıştığını anlamak önemlidir. SDL (ve özellikle SDL2), marş için çok yağlı soyutlama katmanı ekler. –

İlgili konular