OpenGL 淡入/淡出 texture2D
OpenGL Fade in / fade out a texture2D
我正在编写一个应用程序来显示在 OpenGL 中存储为 Texture2D (RGB) 的 .jpg 文件。我想通过淡入黑色,然后淡入下一个纹理,从一个 texture2D 平滑地更改为下一个 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);
}
for 循环的执行速度如此之快,以至于纹理更改似乎会立即发生。
我正在编写一个应用程序来显示在 OpenGL 中存储为 Texture2D (RGB) 的 .jpg 文件。我想通过淡入黑色,然后淡入下一个纹理,从一个 texture2D 平滑地更改为下一个 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);
}
for 循环的执行速度如此之快,以至于纹理更改似乎会立即发生。