如果應用程式需要知道framebuffer裝置的相關引數,必須通過ioctl()系統呼叫來完成。
在標頭檔案中定義了所有的ioctl命令字,不過,最常用的ioctl命令字是下面這兩個:fbioget_fscreeninfo和fbioget_vscreeninfo。
前者返回與framebuffer有關的固定的資訊,比如圖形硬體上實際的幀快取空間的大小、能否硬體加速等資訊。
而後者返回的是與framebuffer有關的可變資訊。
之所以可變,是因為對同樣的圖形硬體,可以工作在不同的模式下。
簡單來講,乙個支援1024x768x24圖形模式的硬體通常也能工作在800x600x16的圖形模式下。
可變的資訊就是指framebuffer的長度、寬度以及顏色深度等資訊。
這兩個命令字相關的結構體有兩個:struct fb_fix_screeninfo和struct fb_var_screeninfo。
這兩個結構體都比較大,前者用於儲存framebuffer裝置的固定資訊,後者用於儲存framebuffer裝置的可變資訊。
在呼叫ioctl()的時候,要用到這兩個結構體。
應用程式中通常要用到struct fb_var_screeninfo的下面這幾個字段:
xres、yres、bits_per_pixel,分別表示x軸的解析度、y軸的解析度以及每畫素的顏色深度(顏色深度的單位為bit/pixel),其型別定義都是無符號32位整型數。
圖形系統開發基礎(挺詳細)
又乙個framebuffer程式設計的例子。
-------------------------------------
#include
#include
#include
#include
#include
#include
#include
#include
#include
char *fb_addr;
unsigned fb_size;
int print_screen(char *buf,int width,int height);
int main(int argc,char *argv)
int print_screen(char *buf,int width,int height)
}
Linux 的學習以及linux的發展
從最早的redhat 6.2到今天的ubuntu 6.4 其中一半是工作需要一半是興趣使然。我個人覺得linux的使用和學習之路是艱難和痛苦,其原因一方面來自於linux資料和社群團隊的缺乏,另一方面是由於使用者介面的不善。linux源自傳統的unix系統,而unix系統則源自古老的大型機系統。而中...
linux 正確刪除linux的方法
如果你需要從乙個硬碟驅動器中刪除 linux 並且已經試圖用預設的 dos windows fdisk 來這麼做,你將會遇到 分割槽存在但又不存在 的問題。要刪除非 dos 分割槽的最好辦法是使用乙個理解分割槽而不單是 dos 的工具。首先,插入 red hat linux 光碟來引導系統。引導後,...
linux學習筆記 linux的啟動
系統初始化 建立終端 使用者登入系統 開啟計算機後,首先進行bios開機自檢,按照bios中設定的順序來啟動硬體 然後由作業系統接管硬體,首先讀入 boot目錄下的核心檔案 init 程序是系統所有程序的起點,你可以把它比擬成系統所有程序的老祖宗,沒有這個程序,系統中任何程序都不會啟動。init 程...