如何在android中使用openGL 2.0设置图片的alpha

时间:2015-08-20 08:46:54

标签: android opengl-es-2.0 alpha

我有一张背景图片,使用openGL 2.0显示。现在我想设置图片的alpha值。但是我失败了。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="msg">roli</p>
<form>
  <label for="hello">Enter text:</label>
  <textarea style="width:100px; height:100px" id="hello" ></textarea>
</form>

这是我的片段着色器

@Override
public void onSurfaceChanged(GL10 gl, int width, int height)
{

    GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1);
    GLES20.glBlendFunc(GLES20.GL_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);
    GLES20.glEnable(GLES20.GL_BLEND);
    .......
}

 @Override
public void onDrawFrame(GL10 gl)
{

     GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
     GLES20.glUniform1i(mTextureUniformHandle0, 0);
     // Bind the texture to this unit.
     GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureDataHandle0);
     // Set the sampler texture unit to 0, where we have saved the texture.
     GLES20.glUniform1f(mTextureAlpha, 0.5f);
     // Draw the triangle
     GLES20.glDrawElements(GLES20.GL_TRIANGLES, indices.length, GLES20.GL_UNSIGNED_SHORT,
             drawListBuffer);
}

似乎color.a * myAlpha不起作用。我不知道我的代码错在哪里!设置alpha值有限制吗?

1 个答案:

答案 0 :(得分:0)

在任何地方都没有调用glClear,我认为每个帧都需要调用它来获得预期的行为。

如果没有,那么alpha混合可能完全按照预期工作,但是因为你每帧都以半透明度绘制背景,所以背景图像会累积,直到它几乎与几个不透明的图像无法区分。帧。