Мы профилируем наше приложение и замечаем, что большую часть времени ЦП тратит на вызовы texImage2D, которые мы используем для заполнения текстуры. Пример показан ниже. Я хотел бы знать, есть ли в WebGL 1/2 более быстрые методы или собственные расширения браузера, которые делают это быстрее?
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D,
0,
0,
0,
width,
height,
gl.RED,
gl.FLOAT,
data);
gl.bindTexture(gl.TEXTURE_2D, null);
Есть параметр offfset, который указывает на PIXEL_UNPACK_BUFFER. Это ускорит процесс?
Я думаю, что об этом уже спрашивали, и ответ был отрицательным: stackoverflow.com/questions/43530082/…
texStorage2D
создает неизменяемую текстуру (ее размер и формат не могут быть изменены дальнейшими вызовами, в отличие от текстур, созданных с помощью texImage2D
), что приводит к некоторому увеличению скорости, но я не уверен, повлияет ли это на время загрузки. Похоже, что UnityWeb использует texStorage2D
и compressedTexSubImage2D
только в том случае, если это помогает (если, конечно, контекст - WebGL2).
Спасибо @riv. Хорошее понимание
TexStorage2D - более быстрый вызов?