2012-06-24 43 views
2

我是OpenGLES的新手,我试图绘制一个带有alpha的矩形,但alpha不会影响屏幕。请帮我弄清楚我不在线的地方。Android,OpenGL ES 1.0,Alpha

GLES10.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
GLES10.glClear(GL10.GL_COLOR_BUFFER_BIT); 
GLES10.glColor4f(0.5f, 0.5f, 0.5f, 0.1f); <-- NOT Working , please help 0.1 alpha not taken 
GLES10.glPushMatrix();GLES10.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
GLES10.glVertexPointer(
     3, 
     GL10.GL_FLOAT, 
     0, 
     RendererImpl.makeFloatBuffer(new float[] { -160.0f, -100.0f, 
       0.0f, 160.0f, -100.0f, 0.0f, 160.0f, 100.0f, 0.0f, 
        -160.0f, 100.0f, 0.0f })); 
GLES10.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 4); 
GLES10.glDisableClientState(GL10.GL_VERTEX_ARRAY); 
GLES10.glPopMatrix(); 
GLES10.glFlush(); 
+0

“alpha在屏幕上不受影响”。请解释你认为这是什么意思?你在期待什么?阿尔法并不意味着什么,除非你正在做某种混合或阿尔法测试。 – Tim

+0

一般使用alpha,它应该是透明的。颜色应该失去不透明性。我应该看到背景。我在这里看不到。我不知道混合,我看到,但看起来会用于纹理。和alpha测试,我使用它,使颜色完全透明或不变。我太少知识解释更多这一点。如果你可以帮助我得到alpha测试的教程,但是我没有找到(搜索但是),我会尝试弄清楚如果这是问题 –

回答

4

如果您希望绘制的对象透明,那么您首先必须启用混合。

画出你的背景,然后设置这些选项:

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

然后试着画出您的透明物体,你在上面所做的。

+0

我不想绘制纹理。我想用alpha表示不透明度的彩色矩形。 –

+0

对不起,它应该对平面颜色或纹理完全一样。当我的意思是'原始的'时,我说了纹理。试试代码,它应该工作。 @KamleshGupta – Tim

+0

它的工作原理和非常感谢你...任何关于好开放教程的想法请教 –