【问题标题】:Image displayed with black background OPENGL ES Android图像显示为黑色背景 OPENGL ES Android
【发布时间】:2012-04-09 01:18:28
【问题描述】:

您好,我正在 Android 上使用 OPENGL Es,我正在尝试在我的应用程序上显示图像。当我显示图像时(图像规格为 64x64 像素),图像上出现黑色背景,但是当我输入以下代码时:

 public void draw(GL10 gl) {
... 
.. 
 gl.glAlphaFunc( GL10.GL_GREATER, 0 ); 

黑色背景消失了,但我的图像中出现了奇怪的颜色。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 张贴截图会很好。发布更多代码会更好。您的图像是否包含 Alpha 通道?未显示的代码是否包含任何 alpha 测试?

标签: android opengl-es


【解决方案1】:

您需要使用混合。像这样的东西应该可以工作:

gl.glEnable(gl.GL_BLEND);
gl.glBlendFunc(gl.GL_SRC_ALPHA,gl.GL_ONE_MINE_SRC_ALPHA);

您可以使用glAlphaFunc接近您的结果这一事实表明图像本身至少是可以的。

【讨论】:

  • 感谢您的回复,我已经尝试过了,但我得到的只是一张完全透明的图像。我已经放了下面的代码,还是不行。
  • gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, /*GL10.GL_REPLACE*/ GL10.GL_MODULATE); gl.glEnable(GL10.GL_ALPHA_TEST); // gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_AMBIENT_AND_DIFFUSE); gl.glClearDepthf(1.0f); gl.glEnable(GL10.GL_DEPTH_TEST); gl.glDepthFunc(GL10.GL_LEQUAL);
  • 我没有在该行中看到任何 GL_BLEND?
  • 我终于找到了问题所在,我的代码中某处有多余的 gl.clearcolor 和 gl.clear4f 行,删除这些多余的行后,GL_BLEND 就像一个魅力......谢谢!跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多