2013-07-15 42 views
15

Tôi đang dạy chương trình con trai của tôi "đúng/khó", vì vậy chúng tôi bắt đầu bằng chữ C, giống như đàn ông thực sự :)Tôi có thể ghi byte trực tiếp vào bộ nhớ video trong Linux, hay có cách nào tốt hơn để lấy dữ liệu lên màn hình?

In văn bản cho bảng điều khiển rất thú vị, nhưng tôi vẫn nhớ cảm giác chuyển đổi i386 cũ của tôi với chế độ 320x200x256 và vẽ một vài hình chữ nhật màu ... trở lại trong ngày nó dễ dàng như gọi int 10h và sau đó bạn chỉ cần ghi byte để [A000:0000] để vẽ các điểm ảnh trên màn hình.

Với Linux hiện đại, tuy nhiên, quyền truy cập cấp thấp như vậy đối với phần cứng có vẻ phức tạp hơn (vì lý do hiển nhiên). Tôi đã xem qua số mmap -ing /dev/fd0 như được mô tả here - hóa ra không có thiết bị /dev/fb0 trên Ubuntu 13.04 của tôi. Tôi cũng đã xem xét sử dụng svgalib - tuy nhiên, mã ví dụ của chúng không hiển thị gì trên màn hình của tôi. Vì vậy, câu hỏi đặt ra là: có những cách dễ dàng để có được quyền truy cập trực tiếp vào bộ nhớ video trong Linux hiện đại mà không đòi hỏi nhiều cấu hình hệ thống và mã boilerplate không? Không. Nó không phải là một truy cập toàn màn hình - mở một cửa sổ X và vẽ các điểm ảnh sẽ có quá tốt, miễn là nó được thực hiện thông qua việc ghi dữ liệu trực tiếp vào bộ nhớ.

+1

Tôi khuyên bạn nên học cách sử dụng SDL và sau đó cho phép hệ thống quyết định cách xử lý tốt nhất trên màn hình. –

+0

@ IgnacioVazquez-Abrams: Wow, cảm ơn vì đã đề cập đến SDL. Tôi đã có thể biên dịch một chương trình SDL mẫu và nó trông giống như những gì tôi đang tìm kiếm. Nếu bạn thêm bình luận của bạn như là một câu trả lời tôi hứa sẽ chấp nhận nó trong một vài ngày cung cấp không có khuôn khổ thậm chí awesomer được đề cập :) – Sergey

+0

lập trình viên thực sự lắp ráp mã :). Hoặc tốt hơn, các lập trình viên thực sự cầm [bướm] (http://xkcd.com/378/), hãy đưa con trai của bạn một mạng lưới bướm, bắt đầu anh ta ngay bây giờ rằng anh ấy còn trẻ! – terdon

Trả lời

12

Thay vì truy cập trực tiếp vào bộ nhớ màn hình, bạn nên cân nhắc sử dụng Simple DirectMedia Layer cho đồ họa của mình (và nhiều hơn nữa!) Và cho phép hệ điều hành vẽ nó lên màn hình.

+0

Đồng ý. SDL là con đường để đi. – Joe

+3

Đối với những điều cơ bản, điều quan trọng là phải hiểu bộ nhớ video là gì và nó hoạt động như thế nào trên cơ sở. SDL (và SDL2 nói riêng) thêm lớp trừu tượng quá béo cho bộ khởi động. –