Я пытаюсь создать простое 3D-приложение в WebGl, в котором каждый нарисованный объект имеет свой собственный шейдер.Но у меня есть странная проблема в Firefox (в Chrome это работает отлично), когда единообразное расположение для каждой матрицы / сэмплера в каждом шейдере не сохраняется должным образом.Это означает, что я должен вызывать getUniformLocation для каждой матрицы, которую использует мой шейдер каждый раз, когда я меняю текущий шейдер, что мне кажется немного расточительным.
tmp.pMatrixUniform = this.gl.getUniformLocation(tmp, "uPMatrix"); //perpesctive
tmp.mvMatrixUniform = this.gl.getUniformLocation(tmp, "uMVMatrix"); //world transform
tmp.samplerUniform = this.gl.getUniformLocation(tmp, "uSampler"); //texture sampler
return tmp;
В приведенном выше коде я создаю шейдер и сохраняю егодля использования на нескольких объектах.Я знаю, что ссылка на объект шейдера tmp хранится и корректно изменяется, потому что прямо над этими строками кода я сохраняю каждое местоположение атрибута аналогичным образом, который не нужно сбрасывать при каждом изменении «текущего шейдера»..
Как я уже сказал, это работает не только в Firefox, что заставляет меня верить, что Firefox и Chrome хранят одно и то же местоположение по-разному.Кто-нибудь знает другой способ хранения этих значений, чтобы он работал в обоих браузерах, не требуя «повторного получения» их для каждого кадра?