Spec-Zone.ru › Web APIs

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

См. также

  • WebGLRenderingContext.bufferData()
  • WebGLRenderingContext.bufferSubData()
  • WebGLRenderingContext.getBufferParameter()
  • WebGL2RenderingContext.copyBufferSubData()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API