我有一张背景图片,使用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值有限制吗?
答案 0 :(得分:0)
在任何地方都没有调用glClear,我认为每个帧都需要调用它来获得预期的行为。
如果没有,那么alpha混合可能完全按照预期工作,但是因为你每帧都以半透明度绘制背景,所以背景图像会累积,直到它几乎与几个不透明的图像无法区分。帧。