Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > OpenGL: многопоточность


Автор: Randajad 9.10.2012, 10:55
Сабж, господа!
Каково это? Пришел в голову вариант создания в одном окне нескольких контекстов. Каждый рисует свою часть сцены. Камерой подгоняется под единую картинку.
Экспериментальные тесты есть, все отлично. Рисую крутящийся треугольник из нескольких потоков.

На таком простом примере проблем нет. Но встают дальнейшие глобальные проблемы. Как рисовать большую сцену из многих мешей? Как реализовывать Occlusion Query? Какие еще способы повышения производительности можно реализовать? Какие проблемы при этом будут?

С уважением.

Автор: Randajad 9.10.2012, 12:10
Почитал интернетов. Говорят, производительность от того, что я буду вызывать функции опенгеля в разных потоках, не повысится. Так ли это?

Автор: Alexeis 9.10.2012, 14:30
  Правильно говорят. На самом деле функции опенгла почти ничего не делают во время вызвова. Они лишь формируют команды, которые будут исполнятся движком. Функции написаны так, чтобы не отъедать много проца. Большая часть работы будет делаться видеокартой и параллелится на ней (на видеокарте) при возможности. Ускорение может быть только при не оптимальном использовании или если не установлены драйвера OpenGL и используется софтовый рендер. Возможно процом считаются операции матричных преобразований. Эти операции могут отнимать немало процессорных ресурсов. В любом случае к вопросу распараллеливания следует подходить если довольно оптимальный алгоритм отъедает уже 50-70% проца и больше. Но в любом случае, нет смысла заниматься передачей вершин в разных потоках. Эта задача не ресурсоемкая.

Автор: tzirechnoy 9.10.2012, 16:57
Первый способ повышэния производительности -- это умерить свои аппетиты. Затем пойдёт экспериментальное сравнение разных подходов и ихвестных оптимизацый.
 Распараллеливание в рамках одной машыны, как тут правильно заметили, чаще всего вообще не является способом повышэния производительности. И если пойдут характерные задачи, на которых оно будет являться -- скорее всего, и без вас распараллелят внутри реализацыи.

Автор: Alexeis 9.10.2012, 20:15
Цитата(tzirechnoy @  9.10.2012,  17:57 Найти цитируемый пост)
 И если пойдут характерные задачи, на которых оно будет являться -- скорее всего, и без вас распараллелят внутри реализацыи.

  Тем не менее современные игры, не смотря на аппаратное ускорение сильно используют процессор. Правда все же, я думаю, что распараллеливают все таки не рендер. там очень много ресурсов есть физика, т.е. проверка коллизий, ИИ, расчет механики сцен и т.д.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)