Android Native C development (2) -- framebuffer
来源:互联网 发布:mac vmware 安装win7 编辑:程序博客网 时间:2024/04/30 09:53
如对Android原生(Natvie)C开发还任何疑问,请参阅《Android原生(Native)C开发之一:环境搭建篇》:http://blog.sina.com.cn/s/blog_4a0a39c30100auh9.html
虽然现在能通过交叉环境编译程序,并push到Android上执行,但那只是console台程序,是不是有些单调呢?下面就要看如何通过Linux的 framebuffer 技术在Android上画图形,关于Linux的framebuffer技术,这里就不再详细讲解了,请大家google一下。
操作framebuffer的主要步骤如下:
1、打开一个可用的FrameBuffer设备;
2、通过mmap调用把显卡的物理内存空间映射到用户空间;
3、更改内存空间里的像素数据并显示;
4、退出时关闭framebuffer设备。
下面的这个例子简单地用framebuffer画了一个渐变的进度条,代码 framebuf.c 如下:
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
inline static unsigned short int make16color(unsigned char r, unsigned char g, unsigned char b)
{
}
int main() {
}
注意,在Android环境,framebuffer设备不是象linux一样的 /dev/fb0,而是 /dev/graphics/fb0 ,
fbfd = open("/dev/graphics/fb0", O_RDWR);
打开framebuffer设备,
将设备map到一块内存,然后就可以操作这块内存空间来显示你想画的图形了。
最后别忘了关闭设备:
效果图如下:
- Android Native C development (2) -- framebuffer
- android native c development
- Android原生(Native)C开发 -- framebuffer篇
- Android Native C development (1) -- Env Setup
- Android原生(Native)C开发之二:framebuffer篇
- Android原生(Native)C开发之二 framebuffer篇
- Android native development tool
- Android C native development – take full control!
- Android C native development using the NDK under Windows
- Android Native Development Kit (NDK)
- Android原生(Native)C(JNI/NDK)开发之二:framebuffer篇
- Android原生(Native)C(JNI/NDK)开发之二:framebuffer篇
- Program for Android in C/C++ with the Native Development Kit (if you dare)
- 初识 Android Native Development Kit (NDK)
- Cross Platform IDE for Android Native Development
- Android NDK 环境搭建(Native Development Kit )
- A brief guide for android native development
- Android NDK: Native Development Kit 入坑篇
- 腾讯的张小龙是一个怎样的人?
- win7中win+E键不管用怎么办_百度经验
- 苹果的脱困之路
- java中提高性能的编码规范(提高性能)
- php empty()和isset()的区别
- Android Native C development (2) -- framebuffer
- Bilateral Filtering
- 自动加载ThinkPHP的类库方式
- Java泛型的好处
- Java 中Quartz应用 (2)
- 走出安全误区之谁能保护Web应用
- 《楚汉传奇》有感
- Linux下的动态库
- ubuntu 登陆后又回到登录界面 因为配置sdk环境变量