Android Studio + OpenGL ES 学习记录
OpenGL是一种应用程序编程接口,它是一种可以对图形硬件设备特性进行访问的软件库,而OpenGL ES是OpenGL的子集,针对手机、PDA和游戏主机嵌入式设备而设计。OpenGL ES 是从 OpenGL 裁剪定制而来的,去除了 glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性,剩下最核心有用的部分。
简介
OpenGL是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API),而在嵌入式和移动平台的版本是OpenGL ES。Android最初就支持OpenGL ES的1.0版本,到现在已经支持到最新的3.2版本,下面的支持变化图:
版本支持声明
可以在AndroidManifet.xml中加入下面这行使用特性的声明,Google Play将会过滤掉不支持指定OpenGL ES版本的用户,拒绝他们安装。
<!-- 需要OpenGL ES 2.0 -->
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
也可以在代码中判断gles的版本,version同样传入版本号即可(例如0x20000)
public static boolean checkOpenGL(Activity activity, int version) {
ActivityManager am = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
if (am != null) {
return am.getDeviceConfigurationInfo().reqGlEsVersion >= version;
}
return false;
}
OpenGL ES的名词解释
图元
官方的解释是图形软件用来描述各种图形的函数,可以理解为图元就是组成图像的基本单元。
顶点数据
在计算机中图元的位置是通过x,y,z,w来存储或颜色数据是通过RGBA的数组格式存储的,然后通过多个点来进行图元装配和光栅化出图形。
片元
元是光栅化过程的产物,光栅化是将一个图元转变为一个二维图象。
光栅化
光栅化是处理区域内的图元并生成片元数据。
OpenGL渲染管线
是显卡芯片内部处理图形信号相互独立的并行处理单元。也就是把数据转化到openGL并且生成最终图像的一个过程。
GLSL是什么
GLSL是一门专门为图形开发设计的编程语言。
可编程管线的编程阶段