2016-07-16 137 views
3

我遇到了一个问题,我希望能够在窗口打开时更改抗锯齿。 SDL2只允许在窗口创建之前设置抗锯齿(采样),我想知道是否有办法在每次更改采样级别时不必重新创建窗口。SDL窗口创建后更改OpenGL抗锯齿?

例子:

SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 4); // Before the window 
SDL_Window* window = SDL_CreateWindow("title", 0, 0, 960, 540, SDL_WINDOW_OPENGL); 

回答

2

如果您想多重采样是你的窗口的一部分,那么你别无选择,只能重新创建窗口。

但是,多重采样是渲染目标的函数。所以,如果你想更好地控制它,你需要做的就是自己分配一个多重采样rendebuffer,将它附加到framebuffer object,然后渲染到那里(以及适当的深度/模板缓冲区,取决于您的特定需求)。当你想显示图像时,blit the multisampled renderbuffer to the window

+0

感谢您的信息。我可能会在以后的项目中使用它,但我发现了一个更简单的答案来解决我的问题。 – Jarann