2013-06-05 119 views
1

因此,我正在使用GL_LINE_STRIP进行一些图形绘制,并且使用了多采样缓冲区,因此线条看起来不那么锯齿。问题是我在图的背景中有一些行为,作为传说。多重采样类型的螺纹排列起来会导致它们的像素厚度恰好为1像素,但由于多重采样的原因,它有时会将线条分布在比原始颜色略微暗淡的2个像素上,从而使线条看起来不同于彼此。渲染到多采样缓冲区并独立解析帧缓冲区

是否有可能将这些图例行直接渲染到解析的帧缓冲区,然后在顶部绘制多重采样的东西?这将不会多重采样背景图例线,而是多重采样图线。

这可能吗?我只是想知道之前,我深入这一点,后来发现你不能这样做。如果你有一些演示代码,告诉我这样做会很棒

+0

或者你可能会想到一个更好的方法来做这个.. – Fonix

回答

1

如果图例最后出现了,你可以将MSAA缓冲区解析为视图帧缓冲区,然后通常将图例渲染为已解析之后缓冲。但是另一种方式是不可能的,因为多采样分辨率只会覆盖目标帧缓冲区的任何以前的内容,所以不会进行任何混合或深度测试。

实际渲染顶部的MSAA东西的唯一方法是首先将它们解析为另一个FBO并在该图例顶部绘制该FBO的纹理。但是对于没有完全覆盖的图例,您将不得不使用alpha混合。因此,在渲染之前,您基本上将MSAA缓冲区清除为0的阿尔法,然后将图形渲染到其中。然后,您解析这些缓冲区,并在图例顶部绘制生成的纹理,使用alpha混合只覆盖实际绘制图形的部分。

+0

啊我看,写入MSAA的差异FBO可能会工作,生病给它一个bash – Fonix