不過原理不太需要了解要畫3D記得打開他。
OPEN GL 是一個有限狀態機,所謂有限狀態機就是當你設定之後他就不會變動,除非你下指令把它取消,所以下了指指令
gl.glEnable(GL10.GL_DEPTH_TEST); //啟動深度測試
表示已經啟動了深度緩衝。
//視窗改變大小
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
// TODO Auto-generated method stub
float ratio = (float) width / height;
gl.glViewport(0, 0, width, height); //設定opengl 繪圖視窗,全螢幕的話就是如左寫法
gl.glMatrixMode(GL10.GL_PROJECTION); //以下將設定opengl的 投射 參數(攝影機參數)
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.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);//設定最棒的顏色修正
gl.glClearColor(0.0f, 0, 0, 0); //清除背景顏色RGBA
gl.glShadeModel(GL10.GL_SMOOTH);//啟用平滑陰影
gl.glClearDepthf(1.0f); //清除深度緩衝
gl.glEnable(GL10.GL_DEPTH_TEST); //啟動深度測試
gl.glDepthFunc(GL10.GL_LEQUAL); //深度測試類型
}
沒有留言:
張貼留言