2D遊戲使用『正交投影』這意味著模型與視點距離無論多遠,其屏幕尺寸大小總為一至.而3D遊戲則使用『透視投影』模型離視點越近其屏幕尺寸越大.而模型離視點越遠其屏幕尺寸越細.
在『正交投影』就像置身於『矩形盒』.而『透視投影』就像切掉『金字塔』頂部,頂部為『近裁剪面』底部為『遠裁剪面』.而另外四面則分別為『左裁剪面』『右裁剪面』『頂裁剪面』『底裁剪面』
透視錐體由四個參數組成
1.『近裁剪面』與相機矩離
2.『遠裁剪面』與相機矩離
3.視口縱橫比,即視口『近裁剪面』寬高比
4.『視場』指定視錐體寬,也就是它所容納場景
桌面OpenGL帶有GLU輔助函式庫.而Android系統也含有GLU庫.設置投影矩陣
GLU.gluPerspective(GL10 gl,float fieldOfView,float aspectRatio,float near,flat far);
該函式將『透視投影矩陣』與當前矩陣相乘.
gl:為GL10實例
fieldOfView:視場角度,人眼視場角大約67度.加減此值可調整橫向視察範圍
aspectRatio:視口縱橫比,此值為一浮點數
near:遠裁剪面與相機距離
far:近裁剪面與相機距離
『透視投影』代碼
GL10 gl = GRAPHICS.GetGL();
清屏
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
設定視口
gl.glViewport(0,0, GRAPHICS.GetWidth(),GRAPHICS.GetHeight());
設定當前矩陣為投影矩陣
gl.glMatrixMode(GL10.GL_PROJECTION);
載入單位矩陣
gl.glLoadIdentity();
設置投視投影
GLU.gluPerspective(gl, fieldOfView, aspectRatio, near, far);
設定當前矩陣為模型視圖矩陣
gl.glMatrixMode(GL10.GL_MODELVIEW);
載入單位矩陣
gl.glLoadIdentity();