Есть ли способ изменить количество выборок MSAA в существующем окне GLFW? - PullRequest
1 голос
/ 13 января 2020

Я сейчас пишу игру на C ++, OpenGL и GLFW. Я хотел бы разрешить пользователям изменять количество сэмплов, которые игра использует для сглаживания, поскольку пользователи старых систем могут вообще отключить сглаживание по соображениям производительности.

Проблема заключается в том, что GLFW_SAMPLES является оконным подсказка создания, что означает, что он применяется при создании окна:

// Use 4 samples for antialiasing
glfwWindowHint(GLFW_SAMPLES, 4);

// The hint above is applied to the window that's created below
GLFWwindow* myWindow = glfwCreateWindow(widthInPix, heightInPix, title.c_str(), glfwGetPrimaryMonitor(), nullptr);

// Disable antialiasing
// This hint is not applied to the previously created window
glfwWindowHint(GLFW_SAMPLES, 4);

Документация GLFW не содержит никакой информации о том, как изменить количество выборок в существующем окне. Кто-нибудь сталкивался с этой проблемой в прошлом?

1 Ответ

3 голосов
/ 13 января 2020

Нет, вы должны создать новое окно и уничтожить старое. Предпочтительно совместно использовать два контекста, чтобы неконтейнерные объекты не были потеряны в случайном порядке.

В качестве альтернативы, вы можете создавать мультисэмплированные текстуры или рендеринг-буферы, выполнять рендеринг в FBO, а затем перетаскивать визуализированные данные в немульти-выборочное окно. Таким образом, у вас есть полный контроль над количеством образцов, и вы можете легко уничтожать и воссоздавать такие изображения на досуге.

...