2012-12-19 18 views
1

我正在創建僅在橫向模式下運行的應用程序。我正在嘗試使用紋理四邊形創建背景,儘管我現在不會擔心紋理。我一直試圖簡單地畫一個四捨五入來填充屏幕從drawOverlay(GL10 gl)與禁用GL_DEPTH_TEST,但每當我這樣做四方沒有完全填滿屏幕,我可以看到glClearColor欄底部和頂部的屏幕。Android OpenGL ES 1:使用四合一填充顯示器

無法使用我用於所有其他對象的modelview矩陣繪製它,我試圖用gluOrtho2D和glOrthof繪製它,但它們都沒有工作。我真的不明白近距離和遠距離剪切機如何與正交繪圖一起工作。每當我嘗試使用glOrtho2D或glOrthof繪製它時,四邊形都不會被繪製(儘管場景的其餘部分仍然呈現)。

這是我在使用正交矩陣

private void drawOverlay(GL10 gl) { 
    gl.glDisable(GL10.GL_DEPTH_TEST); 
    gl.glMatrixMode(GL10.GL_PROJECTION); 
    gl.glPushMatrix(); 
    gl.glLoadIdentity(); 
    GLU.gluOrtho2D(gl, 0f, 1f, 1f, 0f); 
    gl.glMatrixMode(GL10.GL_MODELVIEW); 
    gl.glLoadIdentity(); 
    background.draw(gl, 1.0f, 1.0f, 1.0f, 1.0f); 
    gl.glEnable(GL10.GL_DEPTH_TEST); 
    gl.glMatrixMode(GL10.GL_PROJECTION); 
    gl.glPopMatrix(); 
    gl.glMatrixMode(GL10.GL_MODELVIEW); 
} 

我打電話從onDrawFrame年初該函數繪製的嘗試 - 任何事情之前繪製:

public void onDrawFrame(GL10 gl) { 
    drawOverlay(gl); 
    gl.glLoadIdentity 
    //... 
} 

這裏是如何的「背景」被創建:

background = new ShapePostcard(1f, 1f); 

我相當肯定我不能夠得到使用正常的模型視圖矩陣覆蓋屏幕,但基本上我所做的只是在深度測試禁用之前,在onDrawFrame中繪製「背景」。

感謝您的支持!

回答

0

繪製一個填充屏幕的四邊形最簡單的方法是將投影和模型都設置爲單位矩陣,然後繪製座標爲[-1,-1]到[1,1]的網格。當你看到邊界時,這是你所畫的嗎?我的意思是,

(x, y, widht, height) = (-1,-1, 2, 2)