水到渠成,何须强求?静待花开,一切都会好的。
- Android OpenGLES开发:EGL环境搭建
- Android OpenGLES2.0开发(一):艰难的开始
- Android OpenGLES2.0开发(二):环境搭建
- Android OpenGLES2.0开发(三):绘制一个三角形
- Android OpenGLES2.0开发(四):矩阵变换和相机投影
- Android OpenGLES2.0开发(五):绘制正方形和圆形
- Android OpenGLES2.0开发(六):着色器语言GLSL
- Android OpenGLES2.0开发(七):纹理贴图之显示图片
- Android OpenGLES2.0开发(八):Camera预览
- Android OpenGLES2.0开发(九):图片滤镜
- Android OpenGLES2.0开发(十):FBO离屏渲染
- Android OpenGLES2.0开发(十一):渲染YUV
我们在前面的章节已经绘制了最基本的图形三角形,这一篇我们来画一个正方形和圆形。有了前面的基础,绘制正方形和圆形实际上就是手到擒来的事。
绘制正方形和圆形
来思考下正方形如何绘制?我们知道三角形是最基本的图形,那么正方形应该就是由两个三角形组成的,答案是肯定的。那么圆形如何绘制,其实就是正多边形的绘制,从原点绘制无数个三角形得到圆形。
正方形
正方形的构建比较简单,可以用两个三角形组成。当然,你也可以用很多很多三角形去合成一个正方形,只要你乐意。如下图所示,我们可以按照123组成的三角形和134组成的三角形,两个拼合成一个正方形。
1. 顶点数据定义
我们将Triangle
类拷贝一份修改类名称为Square
,并修改顶点数据如下:
public class Square {
...
// 正方形四个顶点坐标
static float squareCoords[] = {
-0.5f, 0.5f, 0.0f, // top left
-0.5f, -0.5f, 0.0f, // bottom left
0.5f, -0.5f, 0.0f, // bottom right
0.5f, 0.5f, 0.0f, // top right
};
// 绘制顶点的顺序,3个数为一组
private short drawOrder[] = {
0, 1, 2, 0, 2