屏幕上出现白色闪烁

时间:2017-09-02 23:32:33

标签: c++ opengl

在许多demoscene制作中,你可以看到打击乐发生时闪烁白屏的效果(https://www.youtube.com/watch?v=2SbGffUzHSs)。我编写了这样的效果并且工作正常。衰落函数代码(即在render()函数中执行):

void fade() 
{
glLoadIdentity();                                   
glTranslatef (0.0f, 0.0f, -5.0f);

glPolygonMode(GL_FRONT, GL_FILL);
glPolygonMode(GL_BACK, GL_FILL);

glDisable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE); 

if (alpha <= 1)
{
    glColor4f(1.0, 1.0, 1.0, alpha);

    glBegin(GL_QUADS);         
    glVertex3f(-1.0f, -1.0f, 1.0f);
    glVertex3f( 1.0f, -1.0f, 1.0f);
    glVertex3f( 1.0f, 1.0f, 1.0f);
    glVertex3f(-1.0f, 1.0f, 1.0f);
    glEnd();

    alpha += 0.0025;
}           
else
{
    glColor4f(1.0, 1.0, 1.0, alpha_inv);

    glBegin(GL_QUADS);         
        glVertex3f(-1.0f, -1.0f, 1.0f);
        glVertex3f( 1.0f, -1.0f, 1.0f);
        glVertex3f( 1.0f, 1.0f, 1.0f);
        glVertex3f(-1.0f, 1.0f, 1.0f);
    glEnd();

    alpha_inv -= 0.0025;
}

glDisable(GL_BLEND);
glEnable(GL_TEXTURE_2D);    

return;
}

我有两个问题:

  • 我需要一些白色闪光持续时间控制参数(即第一次闪光持续1秒,闪光持续时间仅为0.25秒)
  • 效果必须在每台计算机上具有相同的速度(慢速和快速)。

我可以在上面的代码中做些什么来实现它?

0 个答案:

没有答案