WEB开发网
开发学院手机开发Android 开发 Android操作framebuffer 阅读

Android操作framebuffer

 2010-05-31 14:42:00 来源:WEB开发网   
核心提示:虽然现在能通过交叉环境编译程序,并push到Android上执行,Android操作framebuffer,但那只是console台程序,是不是有些单调呢?下面就要看如何通过Linux的 framebuffer 技术在Android上画图形,请大家google一下,操作framebuffer的主要步骤如下:1、打开一个

虽然现在能通过交叉环境编译程序,并push到Android上执行,但那只是console台程序,是不是有些单调呢?下面就要看如何通过Linux的 framebuffer 技术在Android上画图形,关于Linux的framebuffer技术,这里就不再详细讲解了,请大家google一下。

操作framebuffer的主要步骤如下:

1、打开一个可用的FrameBuffer设备;

2、通过mmap调用把显卡的物理内存空间映射到用户空间;

3、更改内存空间里的像素数据并显示;

4、退出时关闭framebuffer设备。

下面的这个例子简单地用framebuffer画了一个渐变的进度条,代码 framebuf.c 如下:

#include

#include

#include

#include

#include

inline static unsigned short int make16color(unsigned char r, unsigned char g, unsigned char b)

{

return (

(((r >> 3) & 31) << 11) |

(((g >> 2) & 63) << 5) |

((b >> 3) & 31) );

}

int main() {

int fbfd = 0;

struct fb_var_screeninfo vinfo;

struct fb_fix_screeninfo finfo;

long int screensize = 0;

char *fbp = 0;

int x = 0, y = 0;

int guage_height = 20, step = 10;

long int location = 0;

// Open the file for reading and writing

fbfd = open("/dev/graphics/fb0", O_RDWR);

if (!fbfd) {

printf("Error: cannot open framebuffer device. ");

exit(1);

}

printf("The framebuffer device was opened successfully. ");

// Get fixed screen information

if (ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo)) {

printf("Error reading fixed information. ");

exit(2);

}

// Get variable screen information

if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo)) {

1 2 3  下一页

Tags:Android 操作 framebuffer

编辑录入:coldstar [复制链接] [打 印]
赞助商链接