1

所以我使用 GL_LINE_STRIP 做一些图形绘制,并且我使用的是多重采样缓冲区,所以线条看起来不那么锯齿状。问题是我在图表的背景中有一些线条作为图例。多重采样将线条弄乱了,因为它们本来应该是 1 个像素厚,但是由于多重采样,它有时会使线条散布在比原始颜色略暗的 2 个像素上,使线条看起来与彼此。

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

这可能吗?在我深入研究之前我只想知道,后来发现你不能这样做。如果你有一些演示代码给我看,那也很棒

4

1 回答 1

1

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

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

于 2013-06-05T16:47:41.673 回答