版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liudao7994/article/details/84136584
原理
现在要实现用OpenGLES 实现四边形. 一个四边形是可以由两个三角形构成 那么我画两个相连的三角形来实现一个四边形.
如图
有个规定.:图形环绕方向必须一致,要么全是顺时针 要么全是逆时针
1、GL_TRIANGLES:
v1, v2, v3,
v3, v2, v4,
对应的数组
private final float[] vertexData={
-1f,0f,
0f,-1f,
0f,1f,
0f,1f,
0f,-1f,
1f,0f
};
需要修改一个地方, 因为一个三角形是三个顶点,两个三角形就是六个顶点
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
//改成
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 6);
分析: 只分析右半边的三角形
要渲染右边的三角形
v3 的坐标 x ,y 为 (0,1)
v2 的坐标 x, y 为 (0,-1)
v4 的坐标 x, y 为 (1,0)
可以 做出v3,v2,v4的点
private final float[] vertexData={
0f,1f,
0f,-1f,
1f,0f
};
四边形
使用 GL_TRIANGLE_STRIP 属性
有了这个属性的话可以复用点
其实平行四边形就是四个点 那么改造数组
private final float[] vertexData={
-1f,0f,
0f,-1f,
0f,1f,
1f,0f
};
然后修改glDrawArrays 的属性
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
因为是四个顶点所以改成4
后面两个参数 0 是起始 (从第几个点起始) 4 是数量
最后的效果和上面一致
相关代码