Android 3D emulation 架构理解

Android Emulator 给用户提供  GPU on 选项,意思是利用 Host ( 就是执行 Emulator 的PC机) 的
GPU. 当然PC机必须把 OpenGL 的驱动装好

在实现上就是把 libGLESv1_CM.so  libGLESv2.so 替换掉,当system调用
gl的函数的时候,把调用打包为stream,并通过 pipe 发送到 host端处理,进入转化为对 host opengl的调用。

光这样还不够,还要把 libegl, libgralloc 都替换了,由于要调用 host 端的 opengl 必须有 rendercontext,
所以要把 android egl 也转化为host 的 xgl的调用(假设你用 ubuntu).

创建

正常情况下,当一个apk进程须要创建窗口的时候,它调用egl的函数创建 Surface, 也要调用
gralloc的中函数创建内存来存放Surface须要的光栅 , 而后把 两者关联,这些都是在本进程中完毕的,但在 Android
3D emulation 的体系结构中,窗口不能直接创建了,而必需通过发命令给 host 端 render 让它来调用 xgl
的命令来创建

Surface相应 3D Emulation 中的
WindowSurface, 光栅内存相应 3D Emulation 中的 ColorBuffer.

这里的FrameBuffer 是 3D emulation 中的虚拟 FrameBuffer, 他对 ColorBuffer,
WindowSurface, RenderContext进行集中管理

更新

当APK调用swapBuffers (就是把已经画的上屏,
这须要各Surface提供图象内存,有SurfaceFlinger做处理并显示到屏幕上),能够想象使用opengl的画图已经结束,如今就是运行一系列内存
copy, ColorBuffer 把opengl绘好图的 image 读取出来.

elg的eglMakeCurrent參数提供第一个surface是用来画东西的,而第二个就是读取的

public boolean eglMakeCurrent(EGLDisplay display, EGLSurface draw, EGLSurface
read, EGLContext context) ;

应用程序画东西的时候使用的应该是 EGLSurface draw, 这个
Surface是后台的,看不见,仅仅是为了能成功调用opengl的进行硬件渲染

如今上屏了,须要曾经draw的 surface光栅数据读取回来,当然这是eglMakeCurrent 參数提供的

读取的Surface光栅内存供SurfaceFlinger操作,最后生成的屏幕图像在FrameBuffer中,能够直接上屏

最后你在emulator 中,跑赛车游戏也没有问题

Android 3D emulation 架构理解,布布扣,bubuko.com

时间: 2024-10-12 23:58:19

Android 3D emulation 架构理解的相关文章

理解 Android 2D/3D 图形架构

首先理解Android 的 egl 的函数调用,先要得到display (对应显示器),而后选择一个支持的config(这是显卡支持的),而后创建WindowSurface, 还要创建context (context 相当于 opengl 这个状态机), 而后就可以调用 gl 的绘图函数在Surface上画图, 工作完成后需要释放 Context, windowSurace这些资源 Android 3D 图形架构如下 当用户使用 GLSurfaceView 的时候,会调用egl 的函数,创建出G

Android之系统架构

Android 是Google开发的基于Linux平台的开源手机操作系统.它包括操作系统.用户界面和应用程序 —— 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍.Android采用WebKit浏览器引擎,具备触摸屏.高级图形显示和上网功能,用户能够在手机上查看电子邮件.搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台.这里介绍Android的系统架构 android系统架构图 android的系统

Android开发经典书籍下载——《Android 4高级编程》《疯狂Android讲义》《Android应用开发详解(郭宏志)》《Android应用案例开发大全》《Android 3D游戏开发技术》

这是我收集的关于android开发方面的经典书籍,高清PDF电子版,可以在我的百度网盘免费下载,希望对需要的朋友有帮助. 目录: <Android 4高级编程>(附完整源代码) <疯狂Android讲义> <Android应用开发详解(郭宏志)> <Android应用案例开发大全> <Android 3D游戏开发技术> <Android内核剖析 柯元旦> <深入理解Android  卷1> <深入理解Android

Android系统的架构

android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层.1.应用程序     Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等.所有的应用程序都是使用JAVA语言编写的.2.应用程序框架     开发人员也可以完全访问核心应用程序所使用的API框架.该应用程序的架构设计简化了组件的重用;任何

Android系统四层架构分享

Android系统四层架构 个人网站:http://www.51pansou.com Android视频下载:Android视频 Android源码下载:Android源码 如果把Android系统看做一层一层的,那么基本可以理解成以下结构(这是其中一种简单的分层方式):1.最上层是应用层(Application层):包含应用,比如桌面(恩,桌面也是应用).电话.设置等:2.第二层是应用框架层(Framework层):包含了对上层应用的管理和提供开发者所需的应用程序编程接口(API).3.第三层

Android面试题3之描写叙述下Android的系统架构

描写叙述下Android的系统架构: Android系统从下往上分为Linux内核层(linux kerner),执行库(runtime library),应用程序框架层,应用程序层 linuxkernel:负责硬件的驱动程序.网络.电源.系统安全以及内存管理等功能. libraries和 androidruntime:libraries:即c/c++函数库部分,大多数都是开放源码的函数库,比如webkit,该函数库负责 android网页浏览器的执行 applicationframework(

Android平台及其架构(部分转载)

一.Android的系统架构 1.      应用程序 同Android系统一起发布的核心应用程序,如email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等. 这些应用程序都是用java编写的. 2.      应用程序框架 开发者可以用它开发应用,其中包括: • 丰富而又可扩展的视图(Views):可以用来构建应用程序, 它包括列表(lists),网格(grids), 文本框(text boxes),按钮( buttons), 甚至可嵌入的web 浏览器. • 内容提供器

Android面试题3之描述下Android的系统架构

描述下Android的系统架构: Android系统从下往上分为Linux内核层(linux kerner),运行库(runtime library),应用程序框架层,应用程序层 linuxkernel:负责硬件的驱动程序.网络.电源.系统安全以及内存管理等功能. libraries和 androidruntime:libraries:即c/c++函数库部分,大多数都是开放源代码的函数库,例如webkit,该函数库负责 android网页浏览器的运行 applicationframework(应

适用于Android的Flux架构

原文链接 : Flux Architecture on Android 译文出自 : 开发技术前线 www.devtf.cn.未经允许,不得转载! 译者 : Mr.Simple 找到一个好的应用架构对于Android来说并非易事,Goodle似乎并不那么关心这方面,因为他们并没有推荐一个合适的应用架构.但是对于应用来说一个良好的架构是非常重要的.不管你是否同意,每个应用都应该有一个架构.因此,你最好为你的应用设计一个架构,而不是任由它发展. ## 清晰的软件架构 现在比较流行的架构是Bob大叔在