从零开始OpenGL ES(三) 绘制四边形

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liudao7994/article/details/84136584

原理

现在要实现用OpenGLES 实现四边形. 一个四边形是可以由两个三角形构成 那么我画两个相连的三角形来实现一个四边形.

image

如图

有个规定.:图形环绕方向必须一致,要么全是顺时针 要么全是逆时针

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
    };

四边形

image

使用 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 是数量

最后的效果和上面一致

相关代码

https://github.com/liudao01/OpenGLDemo/tree/master

猜你喜欢

转载自blog.csdn.net/liudao7994/article/details/84136584