WebGLRenderingContext: метод bufferSubData()
Базовая поддержка Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Примечание: Эта функция доступна в Веб-воркерах.
Метод WebGLRenderingContext.bufferSubData() API WebGL обновляет подмножество данных объекта буфера.
Синтаксис
bufferSubData(target, offset) bufferSubData(target, offset, srcData)
Параметры
target-
Значение
GLenum, указывающее точку привязки (цель). Возможные значения:gl.ARRAY_BUFFER-
Буфер, содержащий атрибуты вершин, такие как координаты вершин, данные координат текстуры или цвет вершины.
gl.ELEMENT_ARRAY_BUFFER-
Буфер, используемый для индексов элементов.
При использовании контекста WebGL 2, дополнительно доступны следующие значения:
gl.COPY_READ_BUFFER-
Буфер для копирования из одного буфера в другой.
gl.COPY_WRITE_BUFFER-
Буфер для копирования из одного буфера в другой.
gl.TRANSFORM_FEEDBACK_BUFFER-
Буфер для операций обратной связи по преобразованию.
gl.UNIFORM_BUFFER-
Буфер для хранения блоков однородных переменных.
gl.PIXEL_PACK_BUFFER-
Буфер, используемый для операций передачи пикселей.
gl.PIXEL_UNPACK_BUFFER-
Буфер, используемый для операций передачи пикселей.
dstByteOffset-
Значение
GLintptr, указывающее смещение в байтах, с которого начнется замена данных. srcDataНеобязательно-
Значение
ArrayBuffer,SharedArrayBuffer,DataViewилиTypedArray, которые будут скопированы в хранилище данных. srcOffset-
Значение
GLuint, указывающее смещение индекса элемента, с которого начать чтение буфера. lengthНеобязательно-
Значение
GLuint, по умолчанию равное 0.
Возвращаемое значение
None (undefined).
Исключения
- Возникает ошибка
gl.INVALID_VALUE, если данные будут записаны за пределы буфера или еслиdataимеет значениеnull. - Возникает ошибка
gl.INVALID_ENUM, еслиtargetне соответствует одному из разрешенных значений перечисления.
Примеры
Использование bufferSubData
const canvas = document.getElementById("canvas");
const gl = canvas.getContext("webgl");
const buffer = gl.createBuffer();
const data = new Float32Array([1, 2, 3, 4]);
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
gl.bufferSubData(gl.ARRAY_BUFFER, 512, data);
Спецификации
| Спецификация |
|---|
| Спецификация WebGL # 5.14.5 |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
bufferSubData |
9 | 12 | 4 | 12 | 5.1 | 25 | 4 | 12 | 8 | 1.5 | 4.4.3 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferSubData