2011-02-01 7 views
0

私のプログラムでは、テクスチャ付きの背景に四角形(不透明度を変えて、引数として赤を言う)を描きたいと思います。しかし、正方形は背景に応じて間違った色で表示されます。アルファ= 1.0f(不透明)の場合、正方形は黒色の背景に表示されますが、白い背景には白い(とそれに応じて縮尺されます)Android OpenGL-ESでglBlendFuncブレンディングを使って正確な不透明度/色を取得する

私のGLActivityでは次のフラグが設定されています:

gl.glDisable(GL10.GL_LIGHTING); 
gl.glDisable(GL10.GL_CULL_FACE); 
gl.glDisable(GL10.GL_DEPTH_BUFFER_BIT); 
gl.glDisable(GL10.GL_DEPTH_TEST); 
gl.glEnable(GL10.GL_DITHER); 
gl.glShadeModel(GL10.GL_SMOOTH); 
gl.glEnable(GL10.GL_BLEND); 
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE); 

それから私は、背景テクスチャを描画:

gl.glClearColor(0.0f,0.0f,0.0f,1.0f); 


gl.glBindTexture(GL10.GL_TEXTURE_2D, texturesFPS[1]); 
gl.glEnable(GL10.GL_TEXTURE_2D); 

gl.glPushMatrix(); 
gl.glTranslatef(imageOffSetX, 0, 0); 
gl.glColor4f(1,1,1,1); 
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 

gl.glVertexPointer(3, GL10.GL_FLOAT, 0,vertexBGBuffer); 
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBGBuffer); 
gl.glDrawElements(GL10.GL_TRIANGLES, indices.length,GL10.GL_UNSIGNED_SHORT, indexBuffer); 

gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 
gl.glDisable(GL10.GL_TEXTURE_2D); 

それから私は私の背景画像上に四角形を描画:

gl.glPushMatrix(); 
gl.glTranslatef(x, y, 0); 
gl.glColor4f(color[0], color[1], color[2], 1.0f); // Set to 1.0f temporarily 
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer); 
gl.glDrawElements(GL10.GL_TRIANGLES, indices.length, GL10.GL_UNSIGNED_SHORT, indexBuffer); 
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); 
gl.glPopMatrix(); 

glBlendFuncで異なる値を試しましたが、私が望むものを達成する方法を理解できません。すべてのヘルプははるかに高く評価される:)

答えて

3

...私の答えは進化するかもしれないが、私は確かに知って一つのことは、あなたが以下のブレンドfuncを使用しなければならないということである

gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 
2

背景テクスチャが正しく描画するために、私はちょうど私がこの必要な、解決策を見つけた:

:私はこれを呼び出すために必要な四角形を描画する前に、次に

gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE); 

gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 
+1

11分で解決された自己、悪くない。そして、答え時間の5秒の違い、クレイジー。 –

+1

うわー、ダブルスキル。あなたが正しいから、私はあなたの答えを受け入れました。 – stealthcopter

関連する問題