class
Buffer
Используется для хранения и подготовки данных для передачи в атрибуты шейдера
new constructor(initData, options?, isElementArray)
initData
Данные для инита буфера: содержимое буфера или его размер
options?
Параметры передачи буфера в видеокарту, могут быть переопределены из BufferChannel
isElementArray
Флаг определяющий является ли буффер индексным (если true) или повертексным (если false)
bind(gl, location?, options?, instancesExt?, locationsCount?)
Связывает данные с контекстом WebGL.
В случае Buffer.ArrayBuffer связывает с атрибутами шейдера. А в случае Buffer.ElementArrayBuffer связывает массив индексов.
Если используется первый раз, добавляет данные в контекст WebGL.
gl
Контекст WebGL
location?
Положение аттрибута для связывания данных с переменными в шейдере
options?
Параметры передаваемые в функцию vertexAttribPointer, если их нет, то используются параметры конкретного буфера. Параметры должны быть переданы все.
instancesExt?
Экстеншн для работы с instanced буферами,
locationsCount?
Количество слотов необходимых атрибуту. По умолчанию равен 1.
subData(gl, index, data)
Заменяет часть буфера новыми данными и отправляет их в видеокарту
gl
index
Индекс, с которого начать замену
data
Новые данные
BufferChannel
Класс BufferChannel используется, если данные в обычном буфере имееют разные типы и предназначены для разных атрибутов шейдера, т.е. нужно использовать webgl параметры stride и offset. При инициализации классу передаётся Buffer . Несколько BufferChannel могут использовать один и тот же Buffer. Во время рендеринга BufferChannel связывает полученный буфер с нужными параметрами.
@param [object Object] @param
bind(gl, location, options?, instancesExt?, locationsCount?)
Связывает данные с контекстом WebGL с нужными параметрами. Вызывает Buffer#bind исходного буфера.
gl
location
options?
instancesExt?
locationsCount?
Deck2gisLayer
A class that provides rendering any deck.gl layer inside the MapGl canvas / WebGL context.
new constructor(props)
Example:
const deckLayer = new mapgl.Deck2gisLayer(map, Deck, {
id: 'deckLayer',
deck,
type: HexagonLayer,
data,
getPosition: (d) => [d.point.lon, d.point.lat]
});
map.addLayer(deckLayer);
props
initDeck(map, Deck, deckProps?)
Initializes deck.gl instance for working with the MapGL map.
map
The map instance.
Deck
The Deck.gl class
deckProps?
CustomRenderProps initialization options.
setProps(props)
Sets layer properties and updates the layer.
props
deck.gl layer properties.
Object3D
Базовый класс для 3D объектов.
new constructor
traverse(callback)
Вызывает переданный callback для себя и для каждого дочернего класса.
callback
traverseVisible(callback)
Работает также как и Object3D#traverse , но только для объектов с visible = true
callback
updateLocalMatrix
Обновляет локальную матрицу объекта. Необходимо использовать каждый раз после изменения position, scale и quaternion.
Renderer
Используется для инициализация WebGL контекста и отрисовки объектов. Для некоторых объектов может использовать специфичные рендеры.
@param @param [object Object] @param [object Object] @param [object Object] @param [object Object] @param [object Object] @param [object Object] @param [object Object]
addExtension(name)
Включает расширение WebGL
name
Название расширения
setSize(width, height)
Устанавливает размеры элементу canvas и viewport для WebGL
width
Ширина в пикселях
height
Высота в пикселях
setViewport(width?, height?)
Устанавливает viewport для WebGL Если размеры не указаны, то выставляет размеры указанные в функции Renderer#setSize
width?
Ширина в пикселях
height?
Высота в пикселях
RenderTarget
Используется для создания фреймбуфера, куда можно отрендерить кадр.
getDepthBuffer
Возвращает текущие буфер или текстуру глубины фреймбуфера
Shader
Шейдер компилирует код и хранит его в видеокарте. Один шейдер может быть использован для нескольких программ.
@param [object Object] @param [object Object] @param [object Object]
new constructor(type, code, definitions)
get(gl, externalDefinitions?)
Возвращает webgl шейдер для связывания с программой. Если шейдер используюется первый раз, то компилирует его.
gl
Контекст WebGL
externalDefinitions?
Внешние #define, которые могут перезаписать существующие определения
ShaderAttribute
Шейдерный атрибут, используется только ShaderProgram
@param [object Object]
bindLocation(gl, shaderProgram)
ShaderProgram
Шейдерная программа инициализирует шейдеры, подготавливает и связывает данные с WebGL.
@param @param [object Object] @param [object Object] @param [object Object] @param [object Object]
bind(gl, uniforms?, attributes?)
Связывает юниформы и атрибуты программы с контекстом WebGl
gl
uniforms?
Key-value объект содержащий значения юниформ
attributes?
Key-value объект содержащий значения атрибутов
link(gl, externalDefinitions?)
Компилирует шейдеры и слинковывает программу. Одна из двух необходимых функций для работы шейдерной программы.
Texture
Текстуры используются для отрисовки изображений в WebGL
new constructor(src?, options)
src?
В качестве изображения может быть либо элемент img, либо canvas
options
enable(gl, index?)
Связывает WebGL и данные текстуры. При первом вызов происходит инициализация.
gl
index?
Номер текстуры в контексте WebGL. Если его нет, используется уже активированный юнит текстуры.
Vao
Обертка над vertex array object. https://developer.mozilla.org/ru/docs/Web/API/OES_vertex_array_object
Для использования необходимо включить расширение renderer.addExtension('OES_vertex_array_object')
new constructor(shaderProgram, attributes, indicesBuffer)
shaderProgram
Шейдерная программа, каждый Vao привязан к одной шейдерной программе.
attributes
Key-value объект содержащий данные атрибутов.
indicesBuffer
Буффер индексов.
getElementsGLType(gl)
Возвращает GL-тип индексного буфера или null
@returns [object Object]
setAttributesAliases(aliases)
Карта псевдонимов вида { 'shader_att_name': 'vao_attr_name' }. Эти псевдонимы могут использоваться при связке буферов с шейдерными атрибутами в методе bind. Например, в Vao задан буфер 'texcoord_0'. В шейдере он может использоваться под именем 'texcoord_color'.
unbind
Отвязывает vao от контекста WebGL. ВНИМАНИЕ: Этот метод нужно вызывать всегда, перед тем как будет использоваться стандартный подход для связывания атрибутов через ShaderProgram#bind .