【问题标题】:SDL MultisamplingSDL 多重采样
【发布时间】:2011-11-30 18:03:15
【问题描述】:

我一直在尝试让 SDL FSAA 与 Multisampling 一起工作,但它不想这样做。

我从简单的事情开始:

SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 2);

但是我做了相关的获取,它返回 0 用于缓冲区和 1 用于样本。 (SetVideo 之前和之后)。

我在我的 GeForce 280M 上都试过了,怀疑是移动问题,在我的 580 上试过了,也没有运气。

我正在运行带有最新驱动程序的 Windows 7。

如果我在 NVidia 控制面板中强制启用 FSAA,效果会很好,但我似乎无法让应用程序启用它。

有什么想法吗?

【问题讨论】:

  • FSAA 是全屏抗锯齿。它以高分辨率渲染,然后将结果缩小以显示。 MSAA 是多采样抗锯齿。这里只有深度缓冲区被放大,可见深度像素的百分比定义了不透明度。不存在具有多重采样的 FSAA。

标签: opengl sdl antialiasing multisampling


【解决方案1】:

这些函数应该返回 0 或 -1。他们永远不应该返回 1 。 . .所以我不知道那里发生了什么。这些是其他函数的返回值吗?

无论如何,重要的是要注意这些是请求。无法保证它们就是您认为的那样。这就是 SDL_GL_GetAttribute 函数存在的原因(在 SDL_SetVideoMode 之后调用它以查看你得到了什么)。

您正在请求一个每个像素有两个样本的多重采样缓冲区。这不是一个非常大量的多重采样。在 SDL_SetVideoMode 之前,请尝试以下操作:

SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES,16);

如果您看到平滑的边缘,请不要担心。

【讨论】:

  • 创建上下文后调用 SDL_GL_GetAttribute 时的值是 0 和 1。所以,我的请求似乎被忽略了;我只是不确定为什么。我只选择了 2,因为我认为它最有可能成功。
  • 我明白了。可能是该卡不支持2。我会使用更大的东西。通常情况下,我会推荐 4 或 8,但我已经在我的 580 (M) 上成功使用了 32 用于 FBO,如果 16 不起作用,我会感到惊讶。无论如何,我会更担心你所看到的。如果它看起来很柔软光滑,不用担心 SDL_GL_GetAttribute(...) 说什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
相关资源
最近更新 更多