我正嘗試在Android上使用OpenGL進行2D編程。現在,我正處於準備階段。試圖配置我的視口。我有紋理加載和繪圖,但我無法讓它們像我想要的那樣繪製。如果可能的話,我希望原點位於屏幕的左上角,向下增加,因爲這是我的代碼(從以前使用畫布時繼承)的設置。我認爲這很容易;沿翻譯和翻轉的方向。當我嘗試修改配置視口的語句時,我很驚訝地發現,顯然我的應用程序甚至不受它們的影響。見下面的代碼爲GLRenderer的onSurfaceChanged()方法:在Android上設置用於2D OpenGL編程的視口
public void onSurfaceChanged(GL10 gl, int width, int height) {
this.width = width;
this.height = height;
gl.glViewport(0, 0, width, height);
gl.glLoadIdentity();
GLU.gluOrtho2D(gl, 0, width, height, 0);
gl.glColor4x(0x10000, 0x10000, 0x10000, 0x10000);
}
我可以完全改變這些值,或者甚至評論這些線(除了glColor4x一個)與圖形靜止顯示完全相同。如果您將左下角座標作爲原點,圖形顯示器將以其預期尺寸顯示,不會失真,甚至在正確的位置。下面是我的紋理繪圖程序,作爲代表一個可繪製對象類的一部分:
public void draw(GL10 gl, float x, float y) {
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
cropSignature = OpenGLUtil.setTextureCrop(gl,srcRectParam,cropSignature);
((GL11Ext)gl).glDrawTexfOES(x, y, 0, width, height);
}
其中x,y是在繪製座標,寬度,高度都質感的尺寸,在實例指定這個對象。
glDrawTexfOES是否完全繞過了我建立的視口設置?如果是這樣,我應該如何繪畫?我怎樣才能將OpenGL原點設置在左上方,向下增加?或者那是不好的做法,我應該顛倒我的代碼的其餘部分以符合這一點?
你似乎缺少設置矩陣你分配正交投影。在加載單位矩陣之前,您可以嘗試添加'gl.glMatrixMode(GL10.GL_PROJECTION)'。 – harism 2011-05-12 20:13:04
@harism設置這個沒有什麼區別 – Klazen108 2011-05-12 20:32:38