WebGL2RenderingContext: метод getBufferSubData()
Базовая Широко поддерживается *
Данная функция хорошо поддерживается на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2021 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Примечание: Данная функция доступна в Web Workers.
Метод WebGL2RenderingContext.getBufferSubData() API WebGL 2 считывает данные из точки привязки буфера и записывает их в ArrayBuffer или SharedArrayBuffer.
Синтаксис
getBufferSubData(target, srcByteOffset, dstData) getBufferSubData(target, srcByteOffset, dstData, dstOffset) getBufferSubData(target, srcByteOffset, dstData, dstOffset, length)
Параметры
target-
GLenum, определяющая точку привязки (цель). Возможные значения:gl.ARRAY_BUFFER-
Буфер, содержащий атрибуты вершин, такие как координаты вершин, данные координат текстуры или данные цвета вершин.
gl.ELEMENT_ARRAY_BUFFER-
Буфер, используемый для индексов элементов.
gl.COPY_READ_BUFFER-
Буфер для копирования из одного буфера в другой.
gl.COPY_WRITE_BUFFER-
Буфер для копирования из одного буфера в другой.
gl.TRANSFORM_FEEDBACK_BUFFER-
Буфер для операций отслеживания преобразований.
gl.UNIFORM_BUFFER-
Буфер, используемый для хранения блоков униформ.
gl.PIXEL_PACK_BUFFER-
Буфер, используемый для операций передачи пикселей.
gl.PIXEL_UNPACK_BUFFER-
Буфер, используемый для операций передачи пикселей.
srcByteOffset-
GLintptr, определяющий смещение в байтах, с которого начать чтение из буфера. dstData-
Объект
TypedArrayилиDataViewдля копирования данных. ЕслиdstData—DataView, тоdstOffsetиlengthинтерпретируются в байтах, в противном случае используется тип элементаdstData. dstOffsetНеобязательно-
GLuint, определяющий смещение индекса элемента для начала записи вdstData. lengthНеобязательно-
GLuint, определяющий количество элементов для копирования. Если это 0 или не указано,getBufferSubDataбудет копировать до концаdstData.
Возвращаемое значение
Ничего (undefined).
Исключения
Возникает ошибка INVALID_VALUE, если:
-
offset+returnedData.byteLengthвыходит за пределы буфера -
returnedDataравенnull -
offsetменьше нуля.
Возникает ошибка INVALID_OPERATION, если:
- нуль привязан к
target -
targetравенTRANSFORM_FEEDBACK_BUFFER, и любой объект отслеживания преобразований в настоящее время активен.
Примеры
const buffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, buffer); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); const arrBuffer = new ArrayBuffer( vertices.length * Float32Array.BYTES_PER_ELEMENT, ); gl.getBufferSubData(gl.ARRAY_BUFFER, 0, new Float32Array(arrBuffer));
Спецификации
| Спецификация |
|---|
| Спецификация WebGL 2.0 # 3.7.3 |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
getBufferSubData |
56 | 79 | 51 | 43 | 15 | 58 | 51 | 43 | 15 | 7.0 | 58 |
dstData_param_accepts_SharedArrayBuffer |
60 | 79 | 79 | 47 | Нет | 60 | 79 | 44 | Нет | 8.0 | 60 |
См. также
© 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/WebGL2RenderingContext/getBufferSubData