ПрограммированиеФорумГрафика

glfw, ogl контекст не в потоке окна?

#0
19:39, 14 ноя 2016

Можно ли средствами glfw (да и вообще) создать окно в потоке №1, а контекст огл в потоке №2?

Что я хочу:

Хочу обрабатывать логику в потоке 1, рисовать в потоке 2. Всегда создавал контекст в том же потоке что и окно, сейчас озадачился, можно ли создать окно в потоке 1, а контекст в потоке 2. Нужно для того, что бы все оконные события сразу обрабатывались в потоке логики, а не шли из потока рендера через шаманские способы..

В хелпе к glfw написано что glfwMakeContextCurrent и  glfwSwapBuffers могут быть вызваны из любого потока, значит ли это именно то что я хочу?

#1
19:41, 14 ноя 2016

Если shared то да.

#2
19:46, 14 ноя 2016

viennahd
shared немного другое делает, на сколько я понимаю. Я хочу рисовать в одном потоке, а получать оконные события от окна, в котором рисую в другом потоке.

#3
19:47, 14 ноя 2016

denesik
На винде точно можно, на никсах не знаю, там вроде проблемы какие-то с этим.

#4
19:57, 14 ноя 2016

Initialization and termination, event processing and the creation and destruction of windows, contexts and cursors are all limited to the main thread due to limitations of one or several platforms.

Вот что вычитал.. Вообще кто как делает? Отправляют оконные события из потока окна в поток логики? Через какую нибудь синхронную очередь?

#5
20:02, 14 ноя 2016

denesik
> Через какую нибудь синхронную очередь?
Есть lock-free очереди, если смущает синхронизация.

#6
20:13, 14 ноя 2016

eXmire
>
> Есть lock-free очереди, если смущает синхронизация.
Синхронизация в данном случае много лучше чем lock-free очереди. А еще лучше если есть возможность получать оконные события сразу в нужном потоке..

#7
20:27, 14 ноя 2016

denesik
> А еще лучше если есть возможность получать оконные события сразу в нужном
> потоке
Только в том, в котором создается окно. Тут без вариантов.

ПрограммированиеФорумГрафика

Тема в архиве.