- 博客(13)
- 收藏
- 关注
原创 vc几个小技巧
1. 查看宏展开代码。 写一些复杂的宏,经常出现一些莫名其妙的错误,如何查看展开的代码呢。 cpp/c文件上右键属性 【c/c++ \ Preprocessor \ Generate Preporcessed File】 选择/p参数, 再右键编译这个文件,则会在工程目录下生成 .i文件2. 找不到pch文件的 这个基本都是用了预编译头文件,但是
2016-09-02 15:48:30 384
原创 adb分析
基于4.4主要分析adb通讯adb准备篇一.socketpair (双向通讯的管道) 1. Linux环境下使用socketpair函数创造一对未命名的、相互连接的UNIX域套接字。 2. window平台模拟了一套socketpair。主要用到的结构如下struct SocketPairRec{ BipBufferRec a2b
2016-08-02 16:24:14 661
原创 SurfaceFlinger中图像合成流程
android中图像的显示是通过HWComposer合成的,(不支持硬件composer的不考虑,现在基本都支持)。 硬件支持合成就是你输入多路视频,图像信号,出来一路合成好的数据。硬件合成只支持有限的记录信号,所有如何存在太多的信号,需要先通过软件进行合成,surfaceflinger是通过gpu合成的。SurfaceFlinger::init(){ //包装了硬件合成的
2016-05-09 17:20:59 4055
原创 VSYNC信号传递流向
vsync信号源产生地1.硬件支持2.软件模拟SurfaceFlinger创建的init会初始创建HWComposervoid SurfaceFlinger::init() { mHwc = new HWComposer(this,*static_cast(this));}HWComposer::HWComposer( const
2016-05-06 12:31:54 2545
原创 GraphicBuffer和Gralloc模块
Gralloc硬件抽象层:申请释放渲染图像缓冲,驱动屏幕的显示open函数,打开设备,通过name区分了不同的设备 int gralloc_device_open(const hw_module_t* module, const char* name, hw_device_t** device){ if(name=="gpu0"){
2016-04-28 17:58:14 4095
原创 ANativeWindow
ANativeWindow : opengl工作的绘图画布本地窗口,按标准定义好函数(下面好多代码都简化)structANativeWindow{ ..... //上层定义好函数指针,传给opengl后,opengl在必要的时候会调用相应的函数 int (*dequeueBuffer)(structANativeWindow
2016-04-28 17:57:40 12108
原创 简单撸一下EGL
egl复杂构造opengl的工作环境void egl_demo() { EGLDisplaydisplay=eglGetDisplay(EGL_DEFAULT_DISPLAY); eglInitialize(display, 0, 0); EGLConfig config; eglChooseConfig(display,
2016-04-28 17:56:44 7007 1
原创 App端SurfaceView控件绘制流程
SurfaceView,VideoView,GlSurfaceView 中的Surface如何应用 JAVA层:SurfaceView系列控件与其他View绘制存在很大的差别。有自己的Surface,其他View是共享一个Surface1.最基本的SurfaceViewSurfaceView.javapublic class SurfaceView ex
2016-04-28 17:56:00 1591
原创 App端控件绘制流程
APP进程:所有的绘制搜需要画布,app的画布就是Surface了,我们就从Surface开始分析。1.Surface跨进程传递绘图表面,支持序列化接口,所以可以通过binder进行跨进程传递Java层:public class Surface implements Parcelable //native层序列化,可以跨进程传递
2016-04-28 17:53:51 838
原创 Surfaceflinger中图像绘制流程
App产生图像数据是由Surfaceflinger消费的,下面走一下图像的消费过程。activity中的surface对应到服务端就是layer,从layer创建过程开始1.创建过程SurfaceFlinger.cppSurfaceFlinger.createLayer() { //普通类型的layer,支持多个类型 SurfaceFlin
2016-04-28 17:51:13 3512
原创 BufferQueue原理
BufferQueue.cppclass BufferQueue : public BnGraphicBufferProducer, public BnGraphicBufferConsumer, private IBinder::DeathRecipient从继承关系来看,是生产者,也是消费者,还
2016-04-28 17:49:11 8800
原创 新的征程
1. 本人,从小语文没学好,语言组织能力,表达能力都比较差,想提高一下语言能力(很难,是不是人的性格决定的呢) 2. 做能n多年的window编程也感觉有点没意思了,想换换口味,增加点兴趣,挣扎了很长时间也没定下搞什么,想来想去还是先android底层吧(第一感觉,要不也不知挣扎到什么时候)。 2013-03-28 第一次开通了博客,留下点痕迹做个标
2014-03-28 11:21:36 366
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人