Многопоточный рендеринг в OpenGL - PullRequest
1 голос
/ 14 марта 2012

Возможно ли это вообще?Я изучаю DirectX atm и пытаюсь применить кое-что из того, что я изучил, к OpenGL.

Я знаю, что вы можете иметь многопоточный рендеринг в DirectX, используя отложенный контекст, но я не думал, что OpenGL имел такую ​​поддержку, яя нашел примеры многопоточности в OpenGL, но не многопотокового рендеринга, что я и пытаюсь выяснить;или, может быть, я неправильно понял разницу?

Если это возможно, кто-нибудь может предоставить мне какой-нибудь базовый код в качестве примера.

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Это не совсем ответ на вопрос ОП, но он важен для его запроса:

Графический процессор чем-то похож на взаимоисключающий ресурс. Если у вас есть несколько потоков, выполняющих операции рисования, вы создаете накладные расходы на управление. Работа должна быть разделена на шейдерные блоки, или требуется некоторое временное наложение. В любом случае, если операции рисования идут в один и тот же кадровый буфер, операции должны быть синхронизированы, что означает, что конвейеры графического процессора довольно часто останавливаются.

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

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

1 голос
/ 14 марта 2012

OpenGL не имеет эквивалента для отложенных контекстов D3D11.Наиболее близким к этому было бы отображение списков, но они решают совершенно другую проблему и не предназначены для повторного создания снова и снова.

...