У меня есть странная проблема с webGL.WebGL: данные для не квадратной альфа-текстуры
Я использую динамически сгенерированную текстуру, из которой имеет значение только альфа-канал. Вот код:
var texture = new Uint8Array(ar); // ar is my array
gl.bindTexture(gl.TEXTURE_2D, this.transparencyTexture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.ALPHA, array.length, array[0].length, 0, gl.ALPHA, gl.UNSIGNED_BYTE, texture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
Я всегда использовать массив POT»„ширина“и„высота“, но когда„ширина“<>„высота“не работает. Так что в настоящее время он работает только с квадратами.
Что можно сделать?
EDIT:
http://jsfiddle.net/SergeJcqmn/EAmjU/9/
Похоже браузер ошибка, но это трудно узнать без каких-либо подробностей. Например, каковы ваши координаты текстуры? Что вы получаете от 'gl.getError()'? Как это выглядит визуально? – prideout
Просто любопытно, но 'array.length, array [0] .length'? Итак, у вас есть двумерный массив в JavaScript? Как это относится к 'ar'? – gman
Я предоставляю правильные координаты (также для других текстур). gl.getError() возвращает 0. он отображает только как пиксели/фрагменты vec4 (0, 0, 0, 0). – Serge