Android调用OpenGL绘制曲线入门手册
Android OpenGL ES2.0 JNI Cmake
简介:该手册内容仅作为Android调用OpenGL实现绘制曲线图的入门手册,深入学习请参考手册推荐书籍。本手册针对采用jni接口实现java调用C++代码完成OpenGL在Android中的曲线绘制做了详细流程介绍,最终实现效果为在Android平台绘制正弦曲线。
撰写人:武斌(1595451722@qq.com)周星宇
时间:2017年10月11日
CopyRight :东南大学电子科学与工程学院601实验室
版本:1.0
OpenGL简介:
OpenGL为跨编程语言、跨平台的编程接口标准,被当做客户端-服务端系统实现,客户端为应用程序,服务端为硬件厂商提供的OpenGL实现,OpenGL ES为其嵌入式版本。OpenGL ES目前共有三个版本发布,版本一提供不灵活的固定功能管道;版本二引入可编程管道;版本三在原有基础上新增部分API,目前主流使用为版本二OpenGL ES2.0,手册如下内容均用OpenGL代指OpenGL ES2.0。其渲染流程为:OpenGL命令和数据会缓存在RAM中,在一定条件下,会将这些命令和数据通过CPU时钟发送到VRAM,在GPU的控制下,使用VRAM中的数据和命令,完成图形的渲染,并将结果存入帧缓冲区中,帧缓冲区中的帧最终会被发送到显示器上,显示出结果。在现代的图形硬件系统中,还支持不通过CPU时钟直接将数据由RAM发送至顶点缓存区,再由顶点缓存区将数据传递到VRAM或直接将数据由像素帧缓冲区发送至显存(例如OpenGL中的VBO,PBO)。
Android调用OpenGL ES方案
在android应用程序中使用OpenGL ES共有四种方案:
1. 使用GLSurfaceView作为绘图的窗口,利用GLSurfaceView.Renderer接口实现OpenGL渲染上下文,并通过调用android.OpenGL.GLES20中的API函数实现对图像的渲染。
2. 使用GLSurfaceView作为绘图的窗口,使用GLSurfaceView.Renderer实现OpenGL渲染上下文,和1不一样的是通过JNI接口调用#include <GLES2/gl2.h>中的API函数来实现图形渲染。
3. 使用NativeActivity实现OpenGL渲染上下文,并通过JNI接口调用#include <GLES2/gl2.h>中的API函数来实现图形渲染。使用这种方案就意味着整个APP全部用C++语言编写,不能实现android基本控件的绘制,如Button/TextView。
4. 最后一种方法,就是使用SurfaceView作为绘图的窗口,并使用n