OpenGLES兩種方式畫立方體

2021-08-27 06:22:08 字數 1985 閱讀 6637

opengles這東西真tm蛋疼,研究了幾天了,終於能把這東西畫出來

其實兩種方法都是畫12個三角形畫出來的,在opengl es中,只支援三角形,所以任何複雜多邊形都是由三角形畫出來的。

第一種:頂點法

把乙個四邊形當成乙個面,而乙個面由兩個三角形組成。乙個三角形是不是有3個頂點?,所以乙個面就有了3+3個頂點,乙個立方體有6個面,6*6個頂點

此立方體的顏色也是根據頂點所渲染,正如定義這個立方體的頂點一樣,不過它的引數可不是和定義頂點的一樣哦,它的引數型別是:r,g,b,a,代表的是顏色值

public class openglesdemoactivity extends activity 

}

public class openglrender implements glsu***ceview.renderer;

//立方體的頂點顏色

private float colors=;

floatbuffer vertbuffer; //頂點緩衝

floatbuffer colorbuffer; //顏色緩衝

float rx=-70f; //旋轉角度

public openglrender()

public void onsu***cecreated(gl10 gl, eglconfig config)

public void draw(gl10 gl)

public void ondrawframe(gl10 gl)

public void onsu***cechanged(gl10 gl, int width, int height)

第二種:索引法

畫出來的效果與 上面是一樣的,不過它是通過索引所畫出來的

還是分成6個面來畫,乙個面畫2個三角形。

-1f,1f,1f,		//0

-1f,-1f,1f, //1

1f,-1f,1f, //2

1f,1f,1f, //3

這裡畫出來的是這個立方體的最前面,對應的還是x,y,z軸。

private short indices=
只不過的是在這個indices中指定了它的索引位置,所以它才會乖乖聽話把四邊形畫出來

0是左上角的座標,1是左下角,2是右下角,3是右上角

public class demo extends activity

}

public class openglrender2 implements renderer;

//頂點顏色,r,g,b,a

private float colors=;

private short indices=;

private floatbuffer mvertexbuffer,mcolorbuffer;

private shortbuffer mindixbuffer;

private float rx=45.0f;

public openglrender2(bitmap bitmap)

public void ondrawframe(gl10 gl)

public void onsu***cechanged(gl10 gl, int width, int height)

public void onsu***cecreated(gl10 gl, eglconfig config)

OpenGLES兩種方式畫立方體

opengles,終於能把這東西畫出來 其實兩種方法都是畫12個三角形畫出來的,在opengl es中,只支援三角形,所以任何複雜多邊形都是由三角形畫出來的。第一種 頂點法 把乙個四邊形當成乙個面,而乙個面由兩個三角形組成。乙個三角形是不是有3個頂點?所以乙個面就有了3 3個頂點,乙個立方體有6個面...

iOS中畫 UIView的兩種方式

前提 首先有乙個uiview,然後重寫view的 drawrect方法,在這個方法進行繪圖,同時在寫程式時,我們不能直接呼叫drawrect,需要更新繪畫時,我們需要直接呼叫 setneedsdisplay。1.使用 uibezierpath 使用這個就已經知道是在當前view的context上,所...

兩種過載方式

過載的方式 用某次作業題中的實現complex類做例子 1 實現加法 1 complex complex operator const complex c 2 友元函式 complex operator const complex l,const complex r 2 實現 1 complex c...