2013-04-10 84 views
0

我有一些關於使用openGL的問題我是使用openGL的新手,我嘗試設置廣場的RGB,它的工作原理,但它不工作後,我使用混合功能。當它重新繪製時,正方形最終消失。OpenGL混合不工作,廣場消失

以下是代碼

@Override 
public void onDrawFrame(GL10 gl) { 
    // clear Screen and Depth Buffer 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 

    // Reset the Modelview Matrix 
    gl.glLoadIdentity(); 

    // Drawing 
    gl.glTranslatef(0.0f, 0.0f, -5.0f);  // move 5 units INTO the screen 
    GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA); 
    GLES20.glEnable(GLES20.GL_BLEND);     // is the same as moving the camera 5 units away 
    square.draw(gl);      // Draw the triangle 
    //square.loadGLTexture(gl, this.context); 
    gl.glColor4f(red, green, blue, 0f); 
    red = red - 0.01f; 
    blue = blue - 0.01f; 
    green = green - 0.01f; 
    GLES20.glDisable(GLES20.GL_BLEND); 


} 
+0

什麼是「紅色」,「綠色」和「藍色」初始值?如果他們錯了,你正在做'gl.glColor4f(紅色,綠色,藍色,0f);'繪圖後,這可以解釋爲什麼你第二次繪製它消失 – h4lc0n 2013-04-10 09:59:19

+0

等待,沒關係,你給一個0 alpha值,這使得下次繪製完全透明 – h4lc0n 2013-04-10 10:00:21

+1

你如何使用OpenGL ES 1.1和2.0在同一時間? – 2013-04-10 11:06:39

回答

1

首次onDrawFrame被稱爲的部分,兩者顏色和深度緩衝器被清零,則三角形繪製,並且在這之後,顏色改變與0 alpha值。

下一次onDrawFrame被調用,三角形再次繪製,但這次使用的是alpha值0.由於顏色和深度緩衝區都被清除,所以您可能看到的只是一個空屏幕,因爲0 alpha,使用即混合功能,可以翻譯成「完全透明」。

+0

我也有混合問題,你可以看看http://stackoverflow.com/questions/26828344/additive-blending-without-glclear – 2014-11-10 17:58:36