Войти
IrrlichtФорум

Рендер сцен Irrlicht в отдельном потоке (комментарии)

#0
2:49, 12 авг. 2008

Рендер сцен Irrlicht в отдельном потоке (комментарии)

Это сообщение сгенерировано автоматически.


#1
2:49, 12 авг. 2008

Да, рульная штука. А вот вопрос, если у меня в движке, не как в irrlicht'e, потоки будут поддерживаться из нутри, и например рендер и менеджер ресурсов будут находится в разных потоках, и использовать некий общий глобальный объект, то получается, что каждое обращение к нему надо обворачивать в вызовы Wait и Release?

#2
21:58, 12 авг. 2008

shasa
Круть... Наконец-то разберусь с потоками.

#3
22:47, 12 авг. 2008

rossyvirt: ... надо обворачивать в вызовы Wait и Release?
Да. Поддержка много-поточности внутри движка - очень сложная задача. Разработчику движка сложно предвидеть, какие объекты будут пользоваться одновременно, а пользователю движка понять - как правильно использовать движок.

#4
21:20, 6 сен. 2008

вродь слышал, что если обьект занят, то обращение к нему (то есть в функции waitforsingleobjext) будет занимать время. а еслинет, то практически ничего  нет

#5
0:26, 11 сен. 2008

Velud
MSDN!

#6
9:38, 17 сен. 2008

Пытался портировать этот пример на pthreads под линухом, чет них не вышло((
Никто подобными извращениями случаем не занимался?

#7
22:53, 17 сен. 2008

У меня проблема возникла c OpenGL в Windows. Если в этот пример компилировать c режимом EDT_OPENGL, то возникает Unhandled exception. Мне так же не удалось запустить рендер в отдельном потоке в линуксе на pthreads. В чём проблема я не разобрался.

Прошло более 10 месяцев
#8
12:30, 24 июля 2009

2shasa
Всё верно так просто не получиться. В OpenGL право доступа к устройству GL обладает только тот поток который создал контекст.
Эта проблемма решаеться выносом создания контекста и т.д. так же в этот поток.
На самом деле на потоки хорошо делить если есть ещё физика - вот она да желательно должна общитываться отдельно или ещё что. НО! рендринг ?вызов OpenGL комманд? может осуществляться только одним потоком.

ЗЫ и это верно так как конвеер OpenGL один и фактически устройство отрисовки тоже одно.

Прошло более 6 месяцев
#9
13:33, 6 фев. 2010

Ну практически бесполезная статья.

Автор  искусственно ограничил максимально возможный уровень фпс
Основная проблема многопоточности - синхронизация. А главное это доступ на чтение, при возможном обновлении данных из др. потока.
Например Вы моделируете объекты в одном потоке (физич двигле), рендерите на иррлихте. Наступает момент обновления графической трансфорации объекта.
Вам нужно обновить позицию, в тоже время иррлихт к примеру проводит анализ попадающих в зону видимости объектов, т.е читает координаты у объектов и сравнивает их с чем-то...

Вот если бы в таком разрезе была освещена проблема, то статья была бы полезной.

А вернувшись к проблеме, то надо заставить ирлихт временно пропустить модифицируемый объект и потом/или на след кадре вернуться к нему. А вот как это сделать без модификации кода ирлихта.. Может попозжее чего-нибудь напишу на эту тему

IrrlichtФорум

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