【问题标题】:OpenGL blend not work and the square disappearOpenGL混合不起作用,正方形消失
【发布时间】:2013-04-10 09:55:51
【问题描述】:

我对使用 openGL 有一些疑问 我是使用openGL的新手,我尝试设置正方形的RGB,它可以工作,但是在我使用混合功能后它不起作用。当它重绘时,正方形终于消失了。

以下是部分代码

@Override
public void onDrawFrame(GL10 gl) {
    // clear Screen and Depth Buffer
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    // Reset the Modelview Matrix
    gl.glLoadIdentity();

    // Drawing
    gl.glTranslatef(0.0f, 0.0f, -5.0f);     // move 5 units INTO the screen
    GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);
    GLES20.glEnable(GLES20.GL_BLEND);                   // is the same as moving the camera 5 units away
    square.draw(gl);                        // Draw the triangle
    //square.loadGLTexture(gl, this.context);
    gl.glColor4f(red, green, blue, 0f);
    red = red - 0.01f;
    blue = blue - 0.01f;
    green = green - 0.01f;
    GLES20.glDisable(GLES20.GL_BLEND);


}

【问题讨论】:

  • 什么是'red'、'green'和'blue'初始值?如果他们错了,你正在做 'gl.glColor4f(red, green, blue, 0f);'画完之后,这或许可以解释为什么你第二次画它就消失了
  • 等等,没关系,你给出的 alpha 值是 0,这使得下次绘制时完全透明
  • 如何同时使用 OpenGL ES 1.1 和 2.0?

标签: android opengl-es


【解决方案1】:

第一次调用 onDrawFrame 时,颜色和深度缓冲区都被清除,然后绘制一个三角形,然后颜色更改为 0 alpha 值。

下次调用 onDrawFrame 时,会再次绘制三角形,但这次使用 alpha 值 0。由于颜色和深度缓冲区都已被清除,您可能看到的只是一个空屏幕,因为 alpha 为 0,使用该值blend函数,可以翻译为“完全透明”。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
相关资源
最近更新 更多