Я сомневаюсь, что вы можете что-то сделать, но ... вы могли бы использовать каждую программу шейдера WebGL хотя бы один раз и каждый раз рисовать каждый буфер, а мог бы справкой. См. Ответ Алекса по причинам, почему это возможно.
У WebGL большое количество валидации. Большая часть этой проверки выполняется лениво. Один пример - когда вы рисуете, используя gl.drawElements
, он должен проверить, что ни один из ваших индексов не находится за пределами допустимого диапазона. Он делает это и кэширует ответ для определенного диапазона буфера индекса, который вы только что использовали. Если вы не обновите индексы, вам не придется снова проверять. Но это означает, что в первый раз, когда вы рисуете каждую вещь с помощью gl.drawElements
, есть дополнительная проверка, чтобы вы могли попробовать рисовать все раз, прежде чем начать игру.
Подобные вещи случаются с программами GLSL, поэтому использование каждой программы однажды может помочь инициализировать и кешировать их.
Примечание: Я сомневаюсь, что это исправит ситуацию, но, возможно, стоит попробовать.
Обогрев двигателя занимает меньше нескольких минут, я думаю, что это что-то еще (где не работает код ЦПУ). Кстати, может быть, это тоже ваша видеокарта? – Bergi