Каковы затраты на постоянную загрузку новых текстур в графический процессор в OpenGL? - PullRequest
2 голосов
/ 03 марта 2011

Каковы затраты на непрерывную загрузку текстур в графический процессор (и замену старых). Я работаю над новой кроссплатформенной системой 3D-окон, в которой используется OpenGL, и планирую загрузить по одному растровому изображению для каждого окна (содержащего элементы пользовательского интерфейса). Это растровое изображение будет обновляться синхронно с графическим процессором (используя VSync). Мне было интересно, если это хорошая идея, или если постоянная запись растровых изображений повлечет за собой слишком большую нагрузку на производительность. Спасибо!

Ответы [ 2 ]

7 голосов
/ 03 марта 2011

Что-то вроде GeForce 460M от nVidia имеет пропускную способность 60 ГБ / с в локальной памяти.

PCI Express 2.0 x16 может управлять 8 ГБ / с.

Таким образом, если вы пытаетесь передать слишком много текстур по шине PCIe, вы можете столкнуться с проблемами пропускной способности памяти. Это дает вам около 136 мегабайт на кадр при 60 Гц. Несжатый 24-битный 1920x1080 составляет примерно 6 мегабайт. Итак, достаточно сказать, что вы можете загружать несколько кадров видео на кадр на видеокарту 16x.

Конечно, это не так просто. Накладные расходы PCIe составляют около 20%. Все команды рисования также должны быть загружены по этой ссылке.

В целом, хотя вы должны быть в порядке, если вы не переусердствуете. Имейте в виду, что было бы целесообразно загрузить текстуру в одном кадре, который вы не собираетесь использовать до следующего (или даже позже). Таким образом, вы не создаете узкое место, когда рендеринг останавливается в ожидании завершения загрузки PCIe.

0 голосов
/ 03 марта 2011

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

Профиль с более простой ситуацией, имитирующей ожидаемое вами использование. Я подозреваю, что снижение производительности (по крайней мере, без упомянутой оптимизации) будет бесполезным, если у вас несколько окон большего размера, в зависимости от размера этих окон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...