<2014 05 14> Android平台下2D/3D开发攻略
Android通过OpenGL包含了对高性能2D和3D图形的支持,尤其支持OpenGLES API。OpenGL是一个跨平台的图形API,提供了软件操作3D图形硬件的接口。OpenGLES是一个专用于嵌入式设备的OpenGL规格.从android1.0开始支持OpenGLES 1.0和1.1API规格。从Android2.2 (API Level 8)开始,框架支持OpenGLES 2.0 API规格。
Android框架所提供的API与(JAVA)J2MEJSR239 OpenGL ES API非常相似,但并不是完全相同。如果你熟悉J2MEJSR239规格,请注意不同的地方。
Android的框架API和NDK都支持OpenGL.本主题面向Android框架接口.关于NDK的更多信息,请观NDK开发文档.
===========================================================================================
目前,在Linux操作系统中,一般可将图形应用库粗略地分为三个不同层次:
第一层次是图形基础设施,它们本身没有提供相应的应用程序编程接口,而是集成在操作系统中或采用某种封装形式,用作其他高级图形或者应用程序的基本函数库,较典型的有X Window、SVGALib、framebuffer(帧缓冲)和LibGGI等;
第二层次是高级函数库,它们提供了大量的应用程序编程接口,较典型的有Xlib、GDK、GTK+、QT、SDL、OpenGL、PEG和DirectFB等;
第三层次多任务窗口系统图形用户界面GUI,较典型的有 Microwindows、OpenGUI、Qt/Embedded和MiniGUI等。
X11,GTK,QT,GNOME
X11是X Window System Protocol, Version 11(RFC1013),是X server和X client之间的通信协议。X server是xfree86/xorg驱动下的显示设备鼠标键盘统称,X client通过X11协议和xfree86/xorg实现的X server通信,比如,告诉它画一个左上角坐标为(x,y),宽为w,高为h的窗口,xfree86就让显示器把屏幕上的小灯(像素)打亮,然后你就看到了一个窗口。
为了方便开发人员编写X clients,就有了Xlib来封装协议;Xlib不够方便,于是就有了qt和gtk,提供了很多窗口控件(widgets)。
为了方便用户,就出现了gnome和kde等桌面管理系统。一般来说,linux用户看到的界面就是其中之一了。gnome用的是gtk库,kde用的是qt库。
但毫无疑问, GTK, QT也应该可以画点, 画线, 但他们设计的目的本来就在于图形界面的开发, 他们是图形系统中更高层次的抽象, 比方来说, GTK+从2.8起由Cairo来实现其组件的绘制, 而Cairo正和OpenGL一样, 是更低层次的图形库。
OpengGL
OpengGL 只是定义了一组接口, 具体的实现一般由各显卡厂商提供(Nvidia, ATI,...),也因此能更好的利用硬件的性能, 所以,我们可以看到OpenGL-compatible这样标注的显卡。 这也从一个侧面反应了opengl的底层性。仅以画点, 线,面来说,当性能要求高时, 应当考虑opengl。 一般的桌面应用Gtk应该够了。
我注意到GNU Xaos(一个分形演示软件)用的是libx11-dev来做图形绘制, 那么, libx11和gtk又有什么联系?
拜读了X Window System Architecture Overview HOWTO以后, 我才明白这之间的关系: X window System(X11, Xlib)提供最底层的图形应用,Cairo构建于X System上, 而GTK又依赖于Cairo, Gtk又是Gnome的一部分.
回过头来, Cairo和OpenGl都是比Gtk+更低层次的抽象, 但他们是同一层次的抽象吗?Opengl和X window system 谁更底层?
这里说:
"In the X Window System, OpenGL rendering is made available as an
extension to X in the formal X sense: connection and authentication are
accomplished with the normal X mechanisms"
也就是说, X system可以通过opengl来构建。 果然, Xgl就是一个构建于opengl驱动上的 X server(wikipedia: Xgl is an X server architecture designed to take advantage of modern graphics cards via their OpenGL drivers, layered on top of OpenGL via glitz.). 原来opengl是驱动级别的啊。但X server也有其他实现, 不一定是基于opengl的,X.Org reference implementation是最常用的X server.
===========================================================================================
http://my.oschina.net/wolfcs/blog/110507
http://terryblog.blog.51cto.com/1764499/346996/
<2014 05 14> Android平台下2D/3D开发攻略的更多相关文章
- BEA WebLogic平台下J2EE调优攻略--转载
BEA WebLogic平台下J2EE调优攻略 2008-06-25 作者:周海根 出处:网络 前 言 随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供 ...
- Android平台下的JNI开发
JNI是Java Native Interface的缩写,通过JNI可以方便我们在Android平台上进行C/C++编程.要用JNI首先必须安装Android的NDK,配置好NDK环境之后就可以在Ec ...
- [转帖]Android平台下OpenGL初步
原文请看 Android平台下OpenGL初步 本文只关注于如何一步步实现在Android平台下运用OpenGl. 1.GLSurfaceView GLSurfaceView是Android应用程序中 ...
- Android平台下的TCP/IP传输(客户端)
在工科类项目中,嵌入式系统与软件系统或后台数据库之间的信息传输是实现“物联网”的一种必要的途径,对已简单概念的物联网,通常形式都是一个单片机/嵌入式系统实现数据的采集及其处理,通过蓝牙,wifi或者是 ...
- Android平台下Dalvik层hook框架ddi的研究
通过adbi,可以对native层的所有代码进行hook.但对于Android系统来说,这还远远不够,因为很多应用都还是在Dalvik虚拟机中运行的. 那么,有没有什么办法可以对Dalvik虚拟机中跑 ...
- 裸眼3D全攻略3:拍摄3D—瞳距、镜距、视角偏转与空间感
http://sd89.blog.163.com/blog/static/356041322014112532958728/ 3D图片的拍摄,与平面有着全新的不同要求,那就是空间感的表现. 简单来说, ...
- fiddler Android下https抓包全攻略
fiddler Android下https抓包全攻略 fiddler的http.https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行.支付宝.陌陌这样的APP ...
- Android平台下OpenCV移植与使用---基于C/C++
在<Android Studio增加NDK代码编译支持--Mac环境>和<Mac平台下Opencv开发环境搭建>两篇文章中,介绍了如何使用NDK环境和Opencv环境搭建与测试 ...
- Android平台下OpenGL初步
Android OpenGL ES 开发教程 从入门到精通 http://blog.csdn.net/zhoudailiang/article/details/50176143 http://blog ...
随机推荐
- 在Linux下如何查CC攻击?
什么是CC攻击?CC攻击就是利用大量代理服务器对目标计算机发起大量连接,导致目标服务器资源枯竭造成拒绝服务.那么如何判断查询CC攻击呢?本文主要介绍了一些Linux下判断CC攻击的命令. AD:201 ...
- JUC组件扩展(二)-JAVA并行框架Fork/Join(一):简介和代码示例
一.背景 虽然目前处理器核心数已经发展到很大数目,但是按任务并发处理并不能完全充分的利用处理器资源,因为一般的应用程序没有那么多的并发处理任务.基于这种现状,考虑把一个任务拆分成多个单元,每个单元分别 ...
- Openresty配置文件上传下载
1. 下载包安装Openresty openresty-1.13.6.1下载地址 https://openresty.org/download/openresty-1.13.6.1.tar.gz 安装 ...
- 编译JDK1.7
1. 背景 想要一探JDK内部的实现机制,最便捷的路径之一就是自己编译一套JDK. 2. 获取JDK源码 从http://openjdk.java.net/下载源码,如 openjdk-6-src-b ...
- [svc]linux文件特殊权限
这是老以前写的文章, 断断续续的可见那时候的心态还是不稳的. 生产使用: g1,g2组2个组的员工, g2组要访问g1组/home下的文件,rx权限. 这个setfacl就有用. 方法1: 修改普 ...
- [gj]耶稣和撒旦的关系
转: https://zhidao.baidu.com/question/7461904.html 人生充满试探,无论你居住在乡间或城市,都尝会受到试探,耶稣在世上的日子,也受到试探,让我们看看两处经 ...
- QT .pro文件 LIBS用法详解
在程序中需要使用到团队其它成员开发的静态库和动态库,起初是知道使用LIBS变量在在.pro文件中指定需要包含的库,但是实际使用的时候却遇到很大麻烦,但其实确实是因为自己看官方文档不太用心造成的. 下面 ...
- ID4收藏
IdentityServer4.Admin https://github.com/skoruba/IdentityServer4.Admin
- awk数组处理字符串合并
需求: 有一文本文件 lessons.txt 内容如下,请使用 awk 处理该文本,并输出内容如 result.txt lessons.txt: 634751 预排 568688 预排 386760 ...
- google web design html5制作工具
Google 推出 Web Designer,帮助你做 HTML 5 设计的免费本地应用,支持 Windows 和 OS X 2013年10月1日 感谢读者 SamRaper 的提醒. ...