Сглаживание OpenGL без буфера накопления

На карте NVIDIA я могу выполнить полное сглаживание сцены, используя буфер накопления примерно так:

if(m_antialias)
{
    glClear(GL_ACCUM_BUFFER_BIT);
    for(int j = 0; j < antialiasing; j++)
    {
        accPerspective(m_camera.FieldOfView(), // Vertical field of view in degrees.
            aspectratio, // The aspect ratio.
            20., // Near clipping
            1000.,
            JITTER[antialiasing][j].X(), JITTER[antialiasing][j].Y(),
            0.0, 0.0, 1.0);

        m_camera.gluLookAt();

        ActualDraw();

        glAccum(GL_ACCUM, float(1.0 / antialiasing));

        glDrawBuffer(GL_FRONT);
        glAccum(GL_RETURN, float(antialiasing) / (j + 1));
        glDrawBuffer(GL_BACK);
    }

    glAccum(GL_RETURN, 1.0);
}

На картах ATI буфер накопления не реализован, и все говорят, что теперь это можно сделать на языке шейдеров. Проблема с этим, конечно, в том, что GLSL является довольно высоким барьером для новичка в OpenGL.

Может ли кто-нибудь указать мне что-нибудь, что покажет мне, как выполнить сглаживание всей сцены так, как это могут сделать карты ATI, и чтобы это было понятно новичку?

5
задан K. Brafford 9 May 2012 в 01:50
поделиться