失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > osg如何设置抗锯齿(反走样 反锯齿)

osg如何设置抗锯齿(反走样 反锯齿)

时间:2021-04-04 21:54:44

相关推荐

osg如何设置抗锯齿(反走样 反锯齿)

首先抗锯齿是什么?

举个最简单的例子

你用windows画图软件画一根直线(准确说这个叫做线段),当水平或者垂直的时候,如下图,这是绝对完美的

但是

当线段出现倾斜时,就无法做到完美了

此时就会出现锯齿

就如同台阶一样,一级一级的

这是由于显示原理本身所限制的,也即是说因为显示器以及帧格式都是按照像素进行排列的,始终会存在一个最小单位。当线倾斜的时候,不做任何处理的时候,斜方向的最小单位就会出现空隙

最简单也是统一的处理方式自然是用其他的内容填充这些缝隙,如下图所示

右侧是不是看上去就比左侧要更加顺滑,舒服一些了呢?

这就是抗锯齿最基本的原理

至于现在所使用到的抗锯齿的方法,没必要在知乎专门介绍,外面的资料海一样多,你可以自己去查阅

中文查询“抗锯齿”或者“反锯齿”

英文查询“anti aliasing”

文章来自:/question/28855427

现在说在OSG里面如何设置:

其实非常简单,就是在设置osg::GraphicsContext::Traits时,有个成员变量为sample,是采样倍数,默认是0的,你设置为8就可以了,如下:

osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;traits->x = 0;traits->y = 0;traits->width = width;traits->height = height;//支持窗口扩展,默认是不支持的traits->windowDecoration = true;//支持双缓存,默认不支持traits->doubleBuffer = true;traits->sharedContext = 0;traits->red = 8;traits->blue = 8;traits->green = 8;//支持alpha,默认不支持为0,这里改为支持,使截出来的图片具有alpha值traits->alpha = 8;

//采样倍数traits->samples = 8;traits->sampleBuffers = 1;osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get());

然后把gc设置给camera就可以了。

如果觉得《osg如何设置抗锯齿(反走样 反锯齿)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。