在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显卡上,累加缓冲区未被实现。现在每个人都认为你可以在着色器语言中完成这项任务。当然,问题是对于OpenGL初学者来说,GLSL是一个相当高的门槛。
有没有人能指点我如何以ATI显卡可以处理的方式进行全景抗锯齿,并且易于新手理解?
glutInitDisplayMode
时添加GLUT_MULTISAMPLE
即可。 - Elmar ZanderSDL_GL_SetAttribute
将SDL_GL_MULTISAMPLEBUFFERS
设置为1,将SDL_GL_MULTISAMPLESAMPLES
设置为大于0的值。 - Cuadue