Github项目地址,欢迎star~!
为了方便没有准备好*的同学,我把项目在CSDN上打包下载,不过更新会慢一些
基本概念与说明
- OpenGL是一个图形API,用来绘制三维物体(也可以是2D物体),OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集。
- Android平台下,对于OpenGL ES有一套Java的封装,编程时可以避免使用NDK,本系列文章OpenGL的操作全部通过Java的接口来进行,唯一非Java的部分就是GLSL脚本(GLSL,OpenGL Shader Language,即着色器语言)
- OpenGL ES 2.0 支持可编程管线(什么是可编程?之后会解释)
- OpenGL 的基本形状是三角形,无论是绘制形状还是填充,都是对于图形进行操作
- 对于一个平面图形,绘制的结果是有正反面的,但是在本文章中我们不讨论这个问题,如果有兴趣,可以阅读OpenGL ES应用开发实践指南
- 着色器语言(GLSL)主要包括两部分:Vertex shader(定点着色器,负责定点位置与坐标变换,即决定显示哪个部分,以何种位置/姿态显示),Fragment shader(片元着色器,负责纹理的填充与转换,即决定显示成什么样子)
第一个坐标系:OpenGL ES的屏幕坐标系
众所周知,OpenGL ES是一个三维的图形库,但是三维的图像要在二维平面显示,就要经过一定的投影变换,将三维的空间以一定的方式显示在二维屏幕上。
上图显示的是OpenGL ES的屏幕坐标系,无论是X还是Y轴,取值范围都是[-1,1],也就是说,即便你的手机是16:9的屏幕,对于OpenGL ES来说也是一个正方形的绘制范围(是不是很奇怪)
更多关于坐标系的介绍,会放在第四章进行。
在下一节中,我们将学习如何初始化OpenGL的运行环境(不是如何配置Eclipse或者Android Studio,嗯。。),以及如何用OpenGL ES 2.0画出一个三角形(这应该算OpenGL的Hello World了吧)