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...