WebGLRenderingContext: Methode readPixels()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die Methode WebGLRenderingContext.readPixels() der WebGL API liest einen Block von Pixeln aus einem angegebenen Rechteck des aktuellen Farb-Framebuffers in ein TypedArray oder ein DataView-Objekt.
Syntax
// WebGL1:
readPixels(x, y, width, height, format, type, pixels)
// WebGL2:
readPixels(x, y, width, height, format, type, offset)
readPixels(x, y, width, height, format, type, pixels)
readPixels(x, y, width, height, format, type, pixels, dstOffset)
Parameter
x-
Ein
GLint, das das erste horizontale Pixel angibt, das von der unteren linken Ecke eines rechteckigen Blocks von Pixeln gelesen wird. y-
Ein
GLint, das das erste vertikale Pixel angibt, das von der unteren linken Ecke eines rechteckigen Blocks von Pixeln gelesen wird. width-
Ein
GLsizei, das die Breite des Rechtecks angibt. height-
Ein
GLsizei, das die Höhe des Rechtecks angibt. format-
Ein
GLenum, das das Format der Pixeldaten angibt. Mögliche Werte:gl.ALPHA-
Ignoriert die roten, grünen und blauen Komponenten und liest die Alphakomponente.
gl.RGB-
Ignoriert die Alphakomponente und liest die roten, grünen und blauen Komponenten.
gl.RGBA-
Rote, grüne, blaue und alpha Komponenten werden aus dem Farb-Buffer gelesen.
WebGL2 fügt hinzu
gl.REDgl.RGgl.RED_INTEGERgl.RG_INTEGERgl.RGB_INTEGERgl.RGBA_INTEGER
type-
Ein
GLenum, das den Datentyp der Pixeldaten angibt. Mögliche Werte:gl.UNSIGNED_BYTEgl.UNSIGNED_SHORT_5_6_5gl.UNSIGNED_SHORT_4_4_4_4gl.UNSIGNED_SHORT_5_5_5_1gl.FLOAT
WebGL2 fügt hinzu
gl.BYTEgl.UNSIGNED_INT_2_10_10_10_REVgl.HALF_FLOATgl.SHORTgl.UNSIGNED_SHORTgl.INTgl.UNSIGNED_INTgl.UNSIGNED_INT_10F_11F_11F_REVgl.UNSIGNED_INT_5_9_9_9_REV
pixels-
Ein Objekt, in das die Daten gelesen werden sollen. Der Array-Typ muss mit dem Typ des
type-Parameters übereinstimmen:Uint8Arrayfürgl.UNSIGNED_BYTE.Uint16Arrayfürgl.UNSIGNED_SHORT_5_6_5,gl.UNSIGNED_SHORT_4_4_4_4odergl.UNSIGNED_SHORT_5_5_5_1.Float32Arrayfürgl.FLOAT.
dstOffsetOptional-
Offset. Standardmäßig 0.
Rückgabewert
Keiner (undefined).
Ausnahmen
-
Ein
gl.INVALID_ENUM-Fehler wird ausgelöst, wennformatodertypekein akzeptierter Wert ist. -
Ein
gl.INVALID_OPERATION-Fehler wird ausgelöst, wenntypegl.UNSIGNED_SHORT_5_6_5ist undformatnichtgl.RGBist.typegl.UNSIGNED_SHORT_4_4_4_4ist undformatnichtgl.RGBAist.typenicht dem typisierten Array-Typ vonpixelsentspricht.
-
Ein
gl.INVALID_FRAMEBUFFER_OPERATION-Fehler wird ausgelöst, wenn der derzeit gebundene Framebuffer nicht framebuffer-vollständig ist.
Beispiele
const canvas = document.getElementById("canvas");
const gl = canvas.getContext("webgl");
const pixels = new Uint8Array(
gl.drawingBufferWidth * gl.drawingBufferHeight * 4,
);
gl.readPixels(
0,
0,
gl.drawingBufferWidth,
gl.drawingBufferHeight,
gl.RGBA,
gl.UNSIGNED_BYTE,
pixels,
);
console.log(pixels); // Uint8Array
Spezifikationen
| Specification |
|---|
| WebGL Specification> # 5.14.12> |
Browser-Kompatibilität
Loading…