На карте 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, и чтобы это было понятно новичку?