Как вы должны обновить glAttributes и Shaders на слое Webgl - PullRequest
0 голосов
/ 15 апреля 2020

Контекст: мы обернули Openlayers веб-компонентами / полимером, чтобы предоставить нашим клиентам (не опытным программистам) простой способ добавления карт.

Мы обернули слой Webgl и позволяет обновить шейдеры / glUniforms / glAttributes / и, конечно, VectorSource.

Поскольку мы обычно работаем с огромными источниками данных (500 000 и более), мы хотим обработать обновление этих свойств наиболее эффективным способом.

Мы можем легко обновить слой, когда изменения касаются glUniforms и данных, используя функциональные возможности Openlayers, но не можем найти способ сделать это эффективно для шейдеров / glAttributes.

Опции 1: Простой способ это воссоздать слой с обновленными свойствами. (Не самое производительное и дружественное к памяти решение). См. Упрощенный пример здесь:

const options = oldLayer.options;
// Update options, ex: options.vertexShader = source.vertexShader
const newLayer = new WebGlLayer(options);
map.removeLayer(oldLayer);
map.addLayer(newLayer);

Параметры 2: Обойти защищенные свойства слоя / средства визуализации и обновить их (вообще не очистить, если вообще возможно)

Опция 3: вставьте свою идею сюда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...