Привет, всем!
Вопрос к программистам C со стажем. Вот рекомендуемая архитектура OpenGL приложения (на базе SDL2):
while(loop)
{
обработка событий окна();
отрисовка_контента_3D();
переключение_буфера_окна();
асинхронный_обмен_данными();
}
Попытался отделить в два разных потока
- обработчик событий окна (взаимодействие с пользователем),
- отрисовку 3D-контента (GLSL программа, пересчет матрицы вида ... и переключение графичеких буферов окна).
Пробовал запускать каждый из пунктов одним раздельным потоком, но либо события не обрабатываются, либо GLSL бросает исключение, что окно не активно.
Весь вечер терзал поисковики пытаясь понять что не так. В итоге пришел к выводу, что такой фокус невозможен. По крайней мере на SDL2. Мануал по библиотеке SFML на это даже явно указывает.
Собственно вопрос: кто серьезно занимался OpenGL приложениями, я ничего не перепутал? Может кто-то встречал решение, или библиотеку которая может запустить раздельными потоками обработчик событий и вывод контента?