OpenGL淡入/淡出texture2D

时间:2015-07-16 22:41:11

标签: opengl textures

我正在编写一个显示.jpg文件的应用程序,这些文件在OpenGL中存储为Texture2D(RGB)。我希望通过淡化为黑色,然后逐渐淡入下一个纹理,从一个texture2D平滑地转换到下​​一个纹理。

在寻找一些解释后,我写了类似的东西。

void renderTexture()
{
  glMatrixMode(GL_MODELVIEW);

  glEnable(GL_TEXTURE_2D);
  glBindTexture(GL_TEXTURE_2D, mTexture);

  gluSphere(mQuad, 1.0f, 50, 50);

  glBindTexture(GL_TEXTURE_2D, 0);
}

void fadeToBlack()
{
  glEnable(GL_BLEND);
  glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

  for (GLfloat alpha = 1.0; alpha > 0.0; alpha -= 0.05)
  {
    glColor4f(0.0, 0.0, 0.0, alpha);
    renderTexture();

    glFlush();
    glutSwapBuffers();
  }

  glDisable(GL_BLEND);
}

不幸的是,这不会褪色为黑色,而是立即切换为黑色。我必须对GL_BLEND如何在这里工作有一些误解。有人可以指出我做错了吗?

**编辑:这就行了。非常感谢j-p和Benjamin的指针**

void fadeToBlack()
{
  for (GLfloat alpha = 1.0; alpha > 0.0; alpha -= 0.001)
  {
    renderTexture();
    glColor4f(alpha, alpha, alpha, alpha);

    glFlush();
    glutSwapBuffers();
  }
  glColor4f(1.0, 1.0, 1.0, 1.0);
}

1 个答案:

答案 0 :(得分:1)

for循环执行速度很快,纹理变化会立即发生。