1. 程式人生 > >從零開始OpenGL ES(三) 繪製四邊形

從零開始OpenGL ES(三) 繪製四邊形

原理

現在要實現用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