編輯:初級開發
復制
打印
public class GLRender implements Renderer{
float rotateAngle;
//頂點數組,GL ES只能用這個辦法畫圓嗎?
private float[] vertices = new float[720];
//度到弧度的轉換
public float DegToRad(float deg)
{
return (float) (3.14159265358979323846 * deg / 180.0);
}
@Override
public void onDrawFrame(GL10 gl) {
// TODO Auto-generated method stub
// 進入這個函數第一件要做的事就是清除屏幕和深度緩存
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
//畫圓形
drawCircle(gl);
}
public void drawCircle(GL10 gl)
{
//重置投影矩陣
gl.glLoadIdentity();
// 移動操作,移入屏幕(Z軸)5個像素, x, y , z
gl.glTranslatef(0.0f, 0.0f, -5.0f);
//旋轉, angle, x, y , z
gl.glRotatef(rotateAngle, 1.0f, 0.0f, 0.0f);
// 設置當前色為紅色, R, G, B, Alpha
gl.glColor4f(1.0f, 0.1f, 0.1f, 1.0f);
//設置圓形頂點數據,這個是在創建時生成
FloatBuffer verBuffer = FloatBuffer.wrap(vertices);
//設置頂點類型為浮點坐標(GL_FLOAT),不設置或者設置錯誤類型將導致圖形不能顯示或者顯示錯誤
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, verBuffer);
//打開頂點數組
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
//向OGL發送實際畫圖指令
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 360);
//關閉頂點數組功能
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
//畫圖結束
gl.glFinish();
//更改旋轉角度
rotateAngle += 0.5;
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
// TODO Auto-generated method stub
float ratio = (float) width / height;
//設置OpenGL場景的大小
gl.glViewport(0, 0, width, height);
//設置投影矩陣
gl.glMatrixMode(GL10.GL_PROJECTION);
//重置投影矩陣
gl.glLoadIdentity();
// 設置視口的大小
gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
// 選擇模型觀察矩陣
gl.glMatrixMode(GL10.GL_MODELVIEW);
// 重置模型觀察矩陣
gl.glLoadIdentity();
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
// TODO Auto-generated method stub
// 啟用陰影平滑
gl.glShadeModel(GL10.GL_SMOOTH);
// 黑色背景
gl.glClearColor(0, 0, 0, 0);
// 設置深度緩存
gl.glClearDepthf(1.0f);
// 啟用深度測試
gl.glEnable(GL10.GL_DEPTH_TEST);
// 所作深度測試的類型
gl.glDepthFunc(GL10.GL_LEQUAL);
// 告訴系統對透視進行修正
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
//初始化圓形數據
for (int i = 0; i < 720; i += 2) {
// x value
vertices[i] = (float) (Math.cos(DegToRad(i)) * 1);
// y value
vertices[i+1] = (float) (Math.sin(DegToRad(i)) * 1);
}
}
}
向android虛擬機的SD卡裡PUSH文件時總是彈出錯誤
摘自:http://www.eoeandroid.com/thread-15411-1-1.HtmlFailed to push XXXXX.txt on emulat
Android開發教程之高煥堂-上課講義(2)
講義摘錄之8:如何從DDMS發出簡(短)訊給應用程式?1. 如何切換到DDMS?途徑-1:從Eclipse/android應用程式編輯畫面:按下右上角的:就出現:再選取
和Nexus One重逢 初體驗Android 2.2
Nexue One是有一定的緣分的,記得是在1月12號的晚上寫的Nexus One評測,因為對這款手機的關注,使得在奔赴下一個工作征程的時候最後用Nexu
10款對開發者有用的Android應用
本文收集10款對開發者有用的Android應用,希望能對你的開發有所幫助。如果你還知道有其他對開發者很有用的android應用?也分享出來吧。列表如下:1.Remote