Сглаживание OpenGL без накопительного буфера
На карте NVIDIA я могу выполнить полное сглаживание сцены, используя буфер накопления примерно так:
<code>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); } </code>
На картах ATI буфер накопления не реализован, и все говорят, что теперь вы можете делать это на языке шейдеров. Проблема с этим, конечно, в том, что GLSL является довольно высоким барьером для входа для начинающего OpenGL.
Может ли кто-нибудь указать мне на то, что покажет мне, как выполнять сглаживание всей сцены так, как это делают карты ATI, и что новичок может понять?