[ Leksykon ] [ JavaScript ] [ Metody ] [ canvas ] [ WebGL ]
WebGLRenderingContext.bufferData()
[_] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] [Z]
// WebGL1
bufferData(target, usage)
bufferData(target, size, usage)
bufferData(target, srcData, usage)
// WebGL2
bufferData(target, usage, srcOffset)
bufferData(target, srcData, usage, srcOffset)
bufferData(target, srcData, usage, srcOffset, length)
Przykłady:
// Tworzymy bufor dla współrzędnych tekstury
const teksturadBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, teksturadBuffer);
// Umieszczamy wspórzedne dla tektury w buforze
const teksturaP = [
0, 0,
0, 1,
1, 0,
1, 0,
0, 1,
1, 1,
];
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(teksturaP), gl.STATIC_DRAW);
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE);
const daneArray = new Float32Array([0, 1, 2, 3, 4, 5, 6, 7]);
const sizeInBytes = daneArray.length * daneArray.BYTES_PER_ELEMENT;
Opis:
Metoda WebGLRenderingContext.bufferData() inicjuje i tworzy składnicę danych obiektu buforowego.
Parametr target - GLenum określenie punktu wiązania celu. Możliwa wartość:
gl.ARRAY_BUFFER - Bufor zawierający atrybuty wierzchołków, takie jak współrzędne wierzchołków, dane współrzędnych tekstury lub dane koloru wierzchołków.
gl.ELEMENT_ARRAY_BUFFER - Bufor używany dla indeksów elementów.
W przypadku korzystania z kontekstu WebGL 2 dostępne są dodatkowo następujące wartości:
gl.COPY_READ_BUFFER - Bufor do kopiowania z jednego obiektu bufora do drugiego.
gl.COPY_WRITE_BUFFER - Bufor do kopiowania z jednego obiektu bufora do drugiego.
gl.TRANSFORM_FEEDBACK_BUFFER - Bufor do operacji sprzężenia zwrotnego transformacji.
gl.UNIFORM_BUFFER - Bufor służący do przechowywania jednolitych bloków.
gl.PIXEL_PACK_BUFFER - Bufor używany do operacji przesyłania pikseli.
gl.PIXEL_UNPACK_BUFFER - Bufor używany do operacji przesyłania pikseli.
Parametr size - Ustawienie GLsizeiptr rozmiaru w bajtach magazynu danych obiektu buforowego.
Parametr srcData - Opcjonalny ArrayBuffer, SharedArrayBuffer, TypedArray lub DataView, które zostaną skopiowane do magazynu danych. Jeśli null magazyn danych jest nadal tworzony, ale zawartość jest niezainicjowana i niezdefiniowana.
Parametr usage - GLenum określenie zamierzonego wzorca wykorzystania magazynu danych w celach optymalizacji. Możliwa wartość:
gl.STATIC_DRAW - Zawartość ma być określona jednorazowo przez aplikację i wielokrotnie wykorzystywana jako źródło poleceń rysunkowych i specyfikacji obrazu WebGL.
gl.DYNAMIC_DRAW - Zawartość ma być wielokrotnie ponownie określana przez aplikację i wielokrotnie wykorzystywana jako źródło poleceń rysowania i specyfikacji obrazu WebGL.
gl.STREAM_DRAW - Zawartość ma być określona jednorazowo przez aplikację i użyta najwyżej kilka razy jako źródło poleceń rysowania i specyfikacji obrazu WebGL.
W przypadku korzystania z kontekstu WebGL 2 dostępne są dodatkowo następujące wartości:
gl.STATIC_READ - Zawartość ma być określona jednorazowo poprzez odczyt danych z WebGL i wielokrotna odpytywanie przez aplikację.
gl.DYNAMIC_READ - Treść ma być wielokrotnie określana poprzez odczytywanie danych z WebGL i wielokrotne sprawdzanie przez aplikację.
gl.STREAM_READ - Treść ma być określona jednorazowo poprzez odczyt danych z WebGL i najwyżej kilka razy odpytywana przez aplikację
gl.STATIC_COPY - Zawartość ma być określona jednorazowo poprzez odczyt danych z WebGL i wielokrotnie używana jako źródło poleceń rysowania i specyfikacji obrazu WebGL.
gl.DYNAMIC_COPY - Treść ma być wielokrotnie ponownie określana poprzez odczyt danych z WebGL i wielokrotnie wykorzystywana jako źródło poleceń rysowania i specyfikacji obrazu WebGL.
gl.STREAM_COPY - Zawartość ma być określona jednorazowo poprzez odczyt danych z WebGL i wykorzystana najwyżej kilka razy jako źródło poleceń rysowania i specyfikacji obrazu WebGL.
Parametr srcOffset - GLuint określenie przesunięcia indeksu elementu, od którego należy rozpocząć czytanie bufora.
Parametr length - Opcjonalny Domyślna wartość GLuint0.
Wartość zwracana undefined. Wyjątki gl.OUT_OF_MEMORY jeśli kontekst nie może utworzyć magazynu danych o podanym pliku, zgłaszany jest błąd size. Jeśli wartość jest ujemna gl.INVALID_VALUE, zgłaszany jest size błąd. Jeśli lub nie jest to jedno z dozwolonych wyliczeń, gl.INVALID_ENUM zgłaszany jest błąd .target usage. Aby sprawdzić aktualne wykorzystanie i wielkość bufora należy skorzystać z WebGLRenderingContext.getBufferParameter() metody.
Zobacz też:
ArrayBuffer -
DataView -
getBufferParameter() -
gl.INVALID_ENUM -
GLenum -
GLsizeiptr -
SharedArrayBuffer -
TypedArray -