创建SDL窗口后更改OpenGL抗锯齿?

时间:2016-07-16 07:14:31

标签: c++ opengl sdl-2 antialiasing

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

示例:

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

1 个答案:

答案 0 :(得分:3)

如果您希望多重采样成为窗口的一部分,那么您别无选择,只能重新创建窗口。

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