У меня есть две модели, которые я загрузил, и с разными текстурами. Все отлично работает на Firefox, я могу применять обе текстуры к каждому объекту. Однако в Chrome вторая текстура никогда не появляется. Я очень упростил свой код и обнаружил, что он, вероятно, имеет какое-то отношение к тому, как я загружаю свои текстуры.Создание нескольких текстур webgl в Chrome
function texture() {
this.texture = null;
}
texture.prototype.loadTexture = function(gl, img) {
gl.bindTexture(gl.TEXTURE_2D, this.texture);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.bindTexture(gl.TEXTURE_2D, null);
}
texture.prototype.load = function(gl, name) {
this.texture = gl.createTexture();
var img = new Image();
that = this;
img.onload = function() {
that.loadTexture(gl, img);
}
img.src = name;
}
Путь создать новую текстуру является:
var texture = new texture();
texture.load(gl, "foo.bar");
Когда я сделать каждую модель отдельно, это делает их должным образом. Проблема в том, что я использую обе модели в одной и той же сцене. У меня нет этой проблемы с Firefox. Я создал массив из 2 текстур, используя вышеупомянутый метод, и заставил обе модели визуализировать первую текстуру. Это прекрасно работает. Однако, когда я делаю вторую текстуру, в Chrome ничего не происходит, но она работает на Firefox. Chrome на самом деле делает много непредсказуемых вещей, в зависимости от того, какая текстура была загружена первой, и какая текстура заставляю обе модели использовать. В общем, Chrome выбрасывает «ПРЕДУПРЕЖДЕНИЕ RENDER: текстура, привязанная к текстурному блоку 0, не является рендерируемой»
Таким образом, это заставляет меня думать, что что-то не так в том, как я загружаю свои текстуры. Поэтому мой вопрос: правильно ли это загружать текстуры? Я получил это из онлайн-учебника, и они, похоже, только используют 1 текстуру/модель за раз. Я запускаю Chromium для Linux, я еще не тестировал в Windows (если это помогает).
Хм, он работает в Chrome и Firefox без этого, в Linux, Windows и Mac = S – spearmunkie