重新消毒后对整个场景进行抗锯齿处理

poo*_*oya 2 opengl glut antialiasing

我在编译openGl代码时遇到了一个问题.问题是,我想实现全景抗锯齿,我不知道如何.我从Nvidia控制面板开启了强制抗锯齿,这才是我真正想要获得的.我现在用GL_POLYGON_SMOOTH做.显然它没有效率和好看.这是问题

1)我应该使用多次采样吗?2)管道中的哪个部分openGl混合了抗锯齿的颜色?3)除了GL _*_ SMOOTH和多重采样之外还存在哪些替代方案?

Bah*_*bar 5

GL_POLYGON_SMOOTH 不是执行全屏AA(FSAA)的方法.

在这种情况下,不确定你的意思是"效率不高",但它肯定不好看,因为它倾向于混合在网格的中间(在三角形边缘).

现在,关于FSAA和您的问题:

  1. 多重采样(又名MSAA)是今天做FSAA的标准方法.通常的替代方案是超级采样(SSAA),其包括以更高的分辨率渲染,以及最后的下采样.它要贵得多.
  2. 规范说,逻辑上,GL保留一个样本缓冲区(像素缓冲区大小的4倍,4xMSAA)和一个像素缓冲区(总共5倍的内存),并在每个样本写入样本缓冲区,更新具有来自样本缓冲区中当前4个样本的分辨值的像素缓冲区(顺便说一下,它不称为混合.混合是在写入样本缓冲区时发生的事情,由glBlendFunc等人.实际上,这不是硬件中发生的情况.通常,您只写入示例缓冲区(并且硬件通常会尝试压缩数据),并且在使用它时,GL实现将在使用发生之前立即解析完整缓冲区.如果您实际直接使用样本缓冲区(根本不需要解析),这也会有所帮助.
  3. 我报道了SSAA及其成本.最新技术称为形态抗锯齿(MLAA),并正在积极研究中.我们的想法是在完全渲染的图像上进行后处理传递,并且反锯齿看起来像锐边.最重要的是,它不是由GL本身实现的,你必须将其编码为后处理过程.我把它作为参考,但它可能花费很多.