守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 899|回复: 0

[技术资料] 浅析2DX-Lua原理

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51724
    钢镚
    1422

    开源英雄守望者

    发表于 2015-1-12 21:56:53 | 显示全部楼层 |阅读模式

    题外

    目前我的团队正使用2DX的另一个实现[quick-cocos2dx](http://cn.quick-x.com/)来制作下一款产品,又一次得益于开源社区.提到开源 作为受益者们 很多都缺乏对自由软件认知.下面针对安卓平台记录我的一些理解,如你有更深的认识 或者 发现我的误区欢迎指点.(以下分析可能存在谬误)

    * 题内 – android机器结构

    由于2DX本质是使用C/C++编写 所以在安卓平台上必须使用到[NDK](http://zh.wikipedia.org/wiki/NDK),NDK是一种基于原生程序接口的软件开发工具。通过此工具开发的程序直接以本地语言运行,而非虚拟机。因此只有java等基于虚拟机运行的语言的程序才会有原生开发工具包。NDK与JAVA的关系 对比AIR来说 相当于ANE与AS.只是速度和深度他们都不在一个水平上.通过下图展示的是android整个系统的大题结构:



    就android机器而言:

    1. 最开始是我们见到的硬件,屏幕,机壳,电池,等我们所能摸到看到的.
    2. 再往上的是GPU CPU 各种电路板 等我们在表面看不到的.
    3. 再往上到了驱动层(可能驱动层和硬件层之间还有一层)
    4. 再往上到了Linux内核层
    5. 硬件抽象
    6. 再往上到了用户层,这层主要包括了android虚拟机 和 系统原生编程接口.包括OpenGL
    7. android虚拟机再往上最靠近的是安卓开发Framework
    8. 再往上就是我们实际屏幕看到的应用了.

    可能说上面的这些和本文的主题不复合,但是我觉得作为(伪)android开发,无论你是应用开发者 还是驱动开发者 还是游戏开发者,应该对每天接触的东西有个本质的了解.了解一下又不不是让人人去研究驱动开发,说到这里我比较认同”每个人都应该学编程”的观点.

    * 题内 – 系统原生语言

    2dx通过C/C++(openGL本身是C库)调用openGL实现对GPU的各种渲染 进而把CPU解放出来 让游戏本身流畅的运行在android设备中.根据前面的android系统原理我们知道,android虚拟机通过NDK(JNI)实现对原生语言的支持.(这里的原生语言 是指开发系统本身的语言 我们知道 任何一个系统 几乎都是C/C++开发的..当然据我所了解 还有几个比较小众的系统 是用16位汇编开发的,所谓操作系统 其实并不是单单指今天大行其道的WINDOWS LINUX MAC OS,就我的理解而言操作系统本身就是一个虚拟机.虚拟机本质上是定制一套规则让进入虚拟机的人或者应用程序一起遵守.就像道德与法律,其实我们大家本身就活在一个超级大且无比复杂 且隐形的虚拟机中.这个虚拟机运行在我们周遭环境这个大硬件上.按照这个观点很容易让人觉得一切皆是操作系统啊.)

    NDK本质上是使用了JNI()Java Native Interface),所以下篇我将简单分析JNI的原理.

    ## 参考文档

    * [C与Lua互调分析](http://www.cppblog.com/lxyfirst/archive/2012/04/26/65447.html)
    * [Android OpenGL API](http://developer.android.com/ref ... /GLSurfaceView.html)
    * [Android OpenGL HelloWorld](http://yanyin1986.diandian.com/post/2012-11-15/40041401229)
    * [Android OpenGL 调用循环](http://blog.csdn.net/GEOLO/article/details/5957688)
    * [NDK原理浅析](http://shihongzhi.com/ndk/)
    * [Android OpenGL 入门](http://www.jayway.com/2009/12/03 ... for-android-part-i/)
    * [JNI 简单解析](http://www.cnblogs.com/mandroid/archive/2011/06/15/2081093.html)


    本文来自:http://shadowkong.com/archives/1637


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2019-9-24 17:23 , Processed in 0.053174 second(s), 34 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表