Android 3D引擎采用的是OpenGL ES。OpenGL ES是一套为手持和嵌入式系统设计的3D引擎API。 在PC领域,一直有两种标准的3D API进行竞争,OpenGL和DirectX。一般主流的游戏和显卡都支持这两种渲染方式,DirectX在Windows平台上有很大的优势,但是OpenGL具有更好的跨平台性。


     由于嵌入式系统和PC相比,一般说来,CPU、内存等都比PC差很多,而且对能耗有着特殊的要求,许多嵌入式设备并没有浮点运算协处理器,针对嵌入式系统的以上特点,Khronos小组对标准的 OpenGL 系统进行了维护和改动,以期望满足嵌入式设备对3D绘图的要求。


      Android系统使用OpenGL的标准接口来支持3D图形功能,android 3D 图形系统也分为 java 框架和本地代码两部分。本地代码主要是实现OpenGL 接口的库,在Java 框架层,javax.microedition.khronos.opengles 是 java 标准的OpenGL包,android.opengl包提供了OpenGL系统和Android GUI系统之间的联系。


     OpenGL ES目前只支持三角形,因此,所有的图形绘制以及特效变换(如:折叠)都是基于三角形来进行的,旋转除外。比方说需要绘制正方形,那么实际的绘图过程是两个三角形拼凑而来。


      Android 中使用GLSurfaceView来显示OpenGL视图,该类位于android.opengl包里面。它提供了一个专门用于渲染3D的接口Renderer 。


     新建一个类实现Renderer接口

public class MyRenderer implements Renderer
 
{
 
}



然后在新类中重写以下三个方法:

public void onDrawFrame(GL10 gl)
 
{
 
}
 
public void onSurfaceChanged(GL10 gl, int width, int height)
 
{
 
}
 
public void onSurfaceCreated(GL10 gl, EGLConfig config)
 
{
 
}




相关解释:


onSurfaceCreated():当创建GLSurfaceView时被调用,只调用一次。在这个方法中执行只发生一次的动作,比如设置OpenGL环境参数或初始化OpenGL图形对象


onDrawFrame():系统在每次重绘GLSurfaceView时调用此方法。此方法是绘制图形对象的主要的执行点


onSurfaceChanged():当GLSurfaceView几何体改变时系统调用此方法,比如GLSurfaceView的大小改变或设备屏幕的方向改变。使用此方法来响应GLSurfaceView容器的变化。第一次启动应用的时候也会执行这个方法