我正在嘗試爲我的Android應用程序製作2D圖形,它由六個薄矩形組成,每個佔用大約屏幕寬度的1/6,並等於屏幕高度。我不確定正確的方法來確定屏幕上x和y OpenGL座標平面的邊界。最終,我需要編寫邏輯來測試觸摸事件發生在6個矩形中的哪一個,所以我一直試圖通過將OpenGL的座標平面重新映射到設備的屏幕座標平面(其中原點(0,0)是。在查找/重新映射OpenGL ES座標平面的邊界
的屏幕,而不是中間的左上角我宣佈參加六個矩形一個像這樣:
private float vertices1[] = {
2.0f, 10.0f, 0.0f, // 0, Top Left
2.0f, -1.0f, 0.0f, // 1, Bottom Left
4.0f, -1.0f, 0.0f, // 2, Bottom Right
4.0f, 10.0f, 0.0f, // 3, Top Right
};
但因爲我不知道在可見範圍是在x和y什麼(在OpenGL座標系統中)我沒有具體的方法來知道我的矩形需要實例化哪些頂點以佔據顯示器的六分之一,那麼理想的方法是什麼?
種我已經試過的方法,如using glOrthoof()重新映射OpenGL的座標轉換成易於使用設備屏幕的工作座標:
gl.glViewport(0, 0, width, height);
// Select the projection matrix
gl.glMatrixMode(GL10.GL_PROJECTION);
// Reset the projection matrix
gl.glLoadIdentity();
// Calculate the aspect ratio of the window
GLU.gluPerspective(gl, 45.0f,(float) width/(float) height,0.1f, 100.0f);
gl.glOrthof(0.0f,width,height, 0.0f, -1.0f, 5.0f);
// Select the modelview matrix
gl.glMatrixMode(GL10.GL_MODELVIEW);
// Reset the modelview matrix
gl.glLoadIdentity();
但是當我做我的矩形自敗完全。
感謝您的回覆!我目前正在切換到GLES 2.0;您列出的兩種解決方案對於GLES 2.0的工作方式是否相同? – Cody