WEB开发网
开发学院手机开发Android 开发 Android 图形系统详解 阅读

Android 图形系统详解

 2010-09-06 08:33:00 来源:WEB开发网   
核心提示:SurfaceBuffer (SurfaceBuffer的私有类)是Surface的派生类,ISurfaceComposer 定义了基础的接口,Android 图形系统详解(4),供客户端和server端交互,BpSurfaceComposer是一个派生类,将java层的功能调用转换到对应的本地调用,hardware/

SurfaceBuffer (SurfaceBuffer的私有类)是Surface的派生类。

ISurfaceComposer 定义了基础的接口,供客户端和server端交互。

BpSurfaceComposer是一个派生类,提供接口供server调用客户端功能;

BnSurfaceComposer是另一派生类,提供接口供客户端调用server功能。类 SurfaceFlinger 由BnSurfaceComposer派生而来。

SurfaceComposerClient直接供客户端使用,调用ISurface (BnSurface)和 ISurfaceComposer (BnSurfaceComposer)以及 ISurfaceFlingerClient 接口,与server交互。

BClient 派生自ISurfaceFlingerClient (BnSurfaceFlingerClient),调用server的createSurface,真正创建一个surface。每个surface对应一个layer.

egl_native_window_t 定义了一个本地window类 。这个类提供了对本地window的所有描述以及用于egl (opengl 与本地图形系统的接口)操作本地windwo的所有方法。

EGLNativeSurface是egl_native_window_t的一个派生类。

EGLDisplaySurface 是EGLNativeSurface的派生类。 EGLDisplaySurface 是一个非常重要的类,在这个类里,真正打开framebuffer设备(/dev/graphics/fb0 或者/dev/fb0),并将这个设备封装成EGLDisplaySurface的形式供server使用。函数mapFrameBuffer打开 framebuffer, 创建两个缓冲区,(一个是on screen front 缓冲区, 另一个back buffer, 可能位于offscreen framebuffer,也可能位于系统内存)。 函数swapBuffers将back buffer内容拷贝到front buffer中。

DisplayHardware 类中初始化了egl系统,并为本地窗口对象EGLDisplaySurface 创建了对应的EGLSurface 对象。surfaceflinger 使用DisplayHardware去和本地窗口打交道。

五、下列目录中的部分代码

7、frameworks/base/core/jni/android/graphics

8、frameworks/base/core/jni/android/opengl

9、frameworks/base/core/jni/android/android_view_*.cpp

这些目录下的代码在Java层的graphics 组件和native (c++)组件之间衔接,将java层的功能调用转换到对应的本地调用。

hardware/libhardware实现了HAL(Hardware Abstraction Layer)层,copybit device是其中一个模块。

上一页  1 2 3 4 

Tags:Android 图形

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