Я работаю над встроенным приложением для системы с 1 ГБ ОЗУ и 128 МБ выделенной видеопамяти на графическом процессоре Vivante.
Мое приложение представляет собой трехмерное представление работы, выполняемой системой в режиме реального времени. Дело в том, что в основном автомобиль движется по полю типа бесконечной плоскости, а за ним - dr aws. Этот многоугольник может быть сложным - с пробелами и дырами, и он довольно часто обновляется.
Другими словами, я создаю me sh во время выполнения, триангулируя фигуры, полученные из модуля математики - и рисую это как меши.
Я провел небольшую оптимизацию рендеринга - разделив мой «мир» на квадраты и разделив получившийся я sh на эти квадратные куски, позже определив, какие куски мне нужно нарисовать, и которые находятся за пределами усеченного конуса.
Но что касается памяти - до сих пор я просто создавал VBO для данных вершин и индексов, и все. Я оставляю их там и никогда не трогаю их снова - просто визуализирую сетки при необходимости, используя эти VBO
. Проблема, с которой я столкнулся, заключается в том, что через некоторое время моя программа начинает заикаться. Он останавливается на 0,5 секунды или дольше, а затем снова работает плавно в течение нескольких секунд, а затем снова останавливается. РЕДАКТИРОВАТЬ: Сегодня сузили его до перегрева и понижения тактовой частоты графического процессора в 64 раза. Не программная проблема. Но я все еще хочу знать общие советы по управлению памятью.
Я прибил его к своему созданию sh (никаких других вычислений в моей программе). Если я перестану создавать сетки - то есть создаю VBO - проблема будет отсрочена или полностью устранена, если я попаду в точку, где я вообще не создаю сетки.
Я отмечу, что со временем программа переходит в начинаю заикаться - у меня определенно не может закончиться видеопамять. 128 МБ это слишком много, чтобы использовать в то время, я в большинстве случаев использую пару сотен килобайт. Поэтому я даже не уверен, связано ли это с видеопамятью или чем-то еще.
Моя проблема в том, что я не могу найти хорошие статьи, которые описывают то, что мне действительно нужно делать. Все, что я знаю, это то, что если я перестану создавать VBO - проблема исчезнет для меня.
Я не уверен, какой код я могу привести сюда в качестве примера, поэтому пока я не ставлю ни одного.
Любая помощь?