OpenGL ES就不用我多介绍了,它是针对嵌入式设备3D显示的基础,那么在Android如何应用它进行3D图形的绘制呢,那就需要用到这个强大的接口:
Renderer接口:(android.opengl.GLSurfaceView.Renderer)这是一种通用的呈现器接口。负责 OpenGL 调用提供一个框架。用的时候通常创建自己实现此的接口的类来进行3D图形的绘制,然后调用setRenderer方法渲染3D图形。这个接口就是3D绘制的框架,3D图形的绘制就全靠它。
下边是这个类的详解:
public class GlRender implements Renderer{
@Override
public void onDrawFrame(GL10 gl) { //这个方法很强大,整个3D图形的输出都靠它了,它在后台启动了一个线程不断的绘制图形
// TODO Auto-generated method stub //从而使得3D图形得以显现
Log.v("======", "onDrawFrame");
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) { //此方法在surface创建或surface大小改变时调用
// TODO Auto-generated method stub //通常,您在这里将设置视区,如果你的camera固定则可以还设置投影矩阵在这里
Log.v("======", "onSurfaceChanged");
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) { //此方法在surface创建时候调用,用于初始化GL10
// TODO Auto-generated method stub
Log.v("======", "onSurfaceCreated");
}
}
GLSurfaceView:是其中很重要的一个类,此类位于android.opengl包下,用于管理是一块可以是复合视图机器人系统的内存的特殊的曲面。管理一个使表面呈现 OpenGL 的 EGL 显示。接受一个用户提供输入Render对象进行显示。从 UI 线程实现一个专用线程渲染界面实现3D性能。支持按需要和连续的呈现。 包装、 跟踪,和检查 OpenGL 渲染器调用的错误
下边是主程序调用Renderer在屏幕上显示了:
Renderer render = new GlRender();
GLSurfaceView glView = new GLSurfaceView(this);
glView.setRenderer(render);
setContentView(glView);
调用3D的库很简单,但是实现3D效果就难了,需要对矩阵光学等有所了解才行,还需要研究啊。。。。。