OpenGL ES - управление видеопамятью - PullRequest
0 голосов
/ 23 января 2020

Я работаю над встроенным приложением для системы с 1 ГБ ОЗУ и 128 МБ выделенной видеопамяти на графическом процессоре Vivante.

Мое приложение представляет собой трехмерное представление работы, выполняемой системой в режиме реального времени. Дело в том, что в основном автомобиль движется по полю типа бесконечной плоскости, а за ним - dr aws. Этот многоугольник может быть сложным - с пробелами и дырами, и он довольно часто обновляется.

Другими словами, я создаю me sh во время выполнения, триангулируя фигуры, полученные из модуля математики - и рисую это как меши.

Я провел небольшую оптимизацию рендеринга - разделив мой «мир» на квадраты и разделив получившийся я sh на эти квадратные куски, позже определив, какие куски мне нужно нарисовать, и которые находятся за пределами усеченного конуса.

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

. Проблема, с которой я столкнулся, заключается в том, что через некоторое время моя программа начинает заикаться. Он останавливается на 0,5 секунды или дольше, а затем снова работает плавно в течение нескольких секунд, а затем снова останавливается. РЕДАКТИРОВАТЬ: Сегодня сузили его до перегрева и понижения тактовой частоты графического процессора в 64 раза. Не программная проблема. Но я все еще хочу знать общие советы по управлению памятью.

Я прибил его к своему созданию sh (никаких других вычислений в моей программе). Если я перестану создавать сетки - то есть создаю VBO - проблема будет отсрочена или полностью устранена, если я попаду в точку, где я вообще не создаю сетки.

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

Моя проблема в том, что я не могу найти хорошие статьи, которые описывают то, что мне действительно нужно делать. Все, что я знаю, это то, что если я перестану создавать VBO - проблема исчезнет для меня.

Я не уверен, какой код я могу привести сюда в качестве примера, поэтому пока я не ставлю ни одного.

Любая помощь?

...