#webgl
Вопрос:
Я пытаюсь установить числовые данные в текстуру, я хотел бы сохранить один незамкнутый 32-битный поплавок в 4-байтовом пикселе, я использую JavaScript для WebGL2, вот мой текущий код:
const level = 0;
const internalFormat = gl.RGBA32F;
const width = 3;
const height = 2;
const border = 0;
const format = gl.RGBA;
const type = gl.FLOAT;
const data = new Float32Array([ ... 24 values ...]);
gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, format, type, data);
Насколько я понимаю, эта настройка должна сработать, но она работает только в том случае, если я задам 24 значения в массиве, т. Е. 4 фиксированных значения для канала RGBA каждого пикселя в отдельности.
Если я задам 6 значений, я получу ошибку «ArrayBufferView недостаточно велик для запроса», как мне заставить его работать?
Комментарии:
1. Я думаю, что это один 32-битный поплавок на цветовой компонент. Это будет 4 поплавка (16 байт) на пиксель. Ты пробовал
new Float32Array(96);
?2. итак, каков формат для хранения 32-битной плавающей точки (например, стандартной однократной точности ieee754) в 4-байтовом пикселе?
3. Я не знаю, но, похоже, вам нужен R32F. Может быть, это поможет: webgl2fundamentals.org/webgl/lessons/webgl-data-textures.html
4. да, вы правы, спасибо!