Android中用OpenGL开发图形应用,一般是使用GLSurfaceVIew来呈现。
自己需要做的工作主要有两个:
(1)从GLSurfaceView派生一个自己的类,在其中处理键盘、触摸等事件;
(2)实现Renderer接口,在GLSurfaceView通过setRenderer使它们关联起来。
Render接口如下:
public void onDrawFrame(GL10 gl)
{
}
public void onSurfaceChanged(GL10 gl, int width, int height)
{}
public void onSurfaceCreated(GL10 gl, EGLConfig config)
{}
如何通过OpenGL绘制场景就需要在这里面实现了。
自己在pc上用c++写了一个OpenGL程序,想移植到android上,最快的办法当然就是NDK了。但移植完后发现,在android上用OpenGL开发游戏有一些不便之处,就是每次按home键后,再次打开游戏,会重新调用onSurfaceCreated,因为按home键时已经把surfaceview destory了。此时所有的OpenGL资源都没了,需要重新load。
另外,在NDK中使用OpenGL时,绘制文字比较麻烦。可以通过在c++中调用java端功能生成一个文字的纹理来完成,比较烦琐,性能应该也不高吧;简单的数字和字母也可以存在一个纹理图像中,使用时取特定部分显示就可以了。