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

Changing OpenGL anti aliasing after SDL window creation?

本文关键字:OpenGL 窗口 创建 SDL      更新时间:2023-10-16

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

示例:

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

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

但是,多重采样是渲染目标的函数。因此,如果你想对它进行更大的控制,你所需要做的就是自己分配一个多采样的rendebuffer,将其附加到帧缓冲区对象,然后渲染到该对象(根据你的特定需求,还需要一个适当的深度/模具缓冲区)。如果要显示图像,请将多采样渲染缓冲区blit到窗口中。