Найти в Дзене
1358 подписчиков

Немного технических деталей. Как я, наверное, писал раньше, игра периодически подвисала. Не сильно, но раздражающе.


Я попробовал профилировать приложение (т.е. смотреть, где происходят задержки). Выяснилось, что проблема завязана на WebGL: по какой-то причине периодически выпадали кадры. То есть вместо отрисовки - мало того, что не отрисовывались, так, вдобавок, всё тормозили.

Впрочем, ответ был весьма тривиален: неверная работа с графикой. Данные для отрисовки (вершины фигуры, на которую потом следует наложить текстуру) - записываются в буфер. Каждая программа создаёт такой вот буфер заново. Это не очень быстрая операция. А т.к. данный буфер в конце не разрушался - то это приводило к некоторым последствиям, которые выражались в виде подвисания (хотя, думаю, проблема существенно масштабней).

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

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