Spec-Zone.ru › Web APIs

WebGLRenderingContext: метод bufferData()

Базовая Широко поддерживается

Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Web Workers.

Метод WebGLRenderingContext.bufferData() API WebGL инициализирует и создаёт хранилище данных объекта буфера.

Синтаксис

bufferData(target, size, usage)
bufferData(target, srcData, usage)

Параметры

target

GLenum определяющий точку привязки (target). Возможные значения:

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

Буфер для операций передачи пикселей.

size

GLsizeiptr устанавливающее размер хранилища данных объекта буфера в байтах.

srcData Необязательно

ArrayBuffer, SharedArrayBuffer, TypedArray или DataView, которые будут скопированы в хранилище. Если null, хранилище всё ещё создаётся, но его содержимое не инициализировано и неопределено.

usage

GLenum, определяющий предполагаемый шаблон использования хранилища данных для оптимизации. Возможные значения:

gl.STATIC_DRAW

Содержимое предназначено для указания один раз приложением и многократного использования в качестве источника для команд рисования и задания изображений WebGL.

gl.DYNAMIC_DRAW

Содержимое предназначено для многократного переопределения приложением и многократного использования в качестве источника для команд рисования и задания изображений WebGL.

gl.STREAM_DRAW

Содержимое предназначено для указания один раз приложением и использования не более нескольких раз в качестве источника для команд рисования и задания изображений WebGL.

При использовании контекста WebGL 2, доступны следующие дополнительные значения:

gl.STATIC_READ

Содержимое предназначено для указания один раз путём чтения данных из WebGL и многократного запроса приложением.

gl.DYNAMIC_READ

Содержимое предназначено для многократного переопределения путём чтения данных из WebGL и многократного запроса приложением.

gl.STREAM_READ

Содержимое предназначено для указания один раз путём чтения данных из WebGL и не более нескольких запросов приложением.

gl.STATIC_COPY

Содержимое предназначено для указания один раз путём чтения данных из WebGL и многократного использования в качестве источника для команд рисования и задания изображений WebGL.

gl.DYNAMIC_COPY

Содержимое предназначено для многократного переопределения путём чтения данных из WebGL и многократного использования в качестве источника для команд рисования и задания изображений WebGL.

gl.STREAM_COPY

Содержимое предназначено для указания один раз путём чтения данных из WebGL и использования не более нескольких раз в качестве источника для команд рисования и задания изображений WebGL.

Возвращаемое значение

Ничего (undefined).

Исключения

  • Ошибка gl.OUT_OF_MEMORY возникает, если контекст не может создать хранилище данных с заданным size.
  • Ошибка gl.INVALID_VALUE возникает, если size отрицательно.
  • Ошибка gl.INVALID_ENUM возникает, если target или usage не являются одним из разрешённых перечислений.

Примеры

Использование bufferData

const canvas = document.getElementById("canvas");
const gl = canvas.getContext("webgl");
const buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);

Получение информации о буфере

Чтобы проверить текущее использование буфера и размер буфера, используйте метод WebGLRenderingContext.getBufferParameter().

gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE);

Получение размера массива с типом данных

Для расчёта параметра размера для массива с типом данных.

const dataArray = new Float32Array([1, 2, 3, 4]);
const sizeInBytes = dataArray.length * dataArray.BYTES_PER_ELEMENT;

Спецификации

Спецификация
Спецификация WebGL
# 5.14.5

Совместимость с браузерами

Рабочие столы Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
bufferData 9 12 4 12 5.1 25 4 12 8 1.5 4.4.3

См. также

  • WebGL2RenderingContext.bufferData()
  • WebGLRenderingContext.createBuffer()
  • WebGLRenderingContext.bufferSubData()
  • Другие буферы: WebGLFramebuffer, WebGLRenderbuffer

© 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/bufferData

Spec-Zone.ru

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