Start · Sprachen · JavaScript · Referenz · WebGLRenderingContext.getFramebufferAttachmentParameter()

WebGLRenderingContext.getFramebufferAttachmentParameter()

Methode

Liefert Informationen über einen Anhang (Textur oder Renderbuffer) des gebundenen Framebuffers, etwa Objekttyp, Objekt, Mipmap-Level, Würfelseite oder Bittiefe.

seit JavaScript WebGL 1.0 (erweitert in WebGL 2) – Baseline: alle Kategorie: webapi

Signatur

WebGLRenderingContext.prototype.getFramebufferAttachmentParameter(target, attachment, pname)

Beschreibung

Mit getFramebufferAttachmentParameter() fragst du ab, was an einem Anhangspunkt (COLOR_ATTACHMENT0, DEPTH_ATTACHMENT usw.) des Framebuffers hängt, der gerade an target gebunden ist, und wie es angehängt wurde. Du erfährst, ob dort eine Textur oder ein Renderbuffer hängt, welches Objekt es genau ist und welches Mipmap-Level oder welche Würfelseite verwendet wird.

Am nützlichsten ist die Methode bei der Fehlersuche und in Engines oder Hilfsbibliotheken, die fremde Framebuffer untersuchen müssen, etwa um zu prüfen, ob ein Render-Target richtig aufgebaut ist. Außerdem bekommst du damit Formatdetails wie die Farbkodierung (LINEAR/SRGB) oder den Komponententyp (FLOAT, INT, UNSIGNED_INT, SIGNED_NORMALIZED, UNSIGNED_NORMALIZED). In WebGL 1 brauchst du dafür Erweiterungen, in WebGL 2 gehört das zum Standard.

Ab WebGL 2 kannst du zusätzlich die Bittiefe jedes Kanals (FRAMEBUFFER_ATTACHMENT_RED_SIZE, …_DEPTH_SIZE, …_STENCIL_SIZE usw.) und die Textur-Ebene (FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER) abfragen. Das geht auch für den Standard-Framebuffer, also die Zeichenfläche des Canvas. Dafür verwendest du die Anhangspunkte gl.BACK, gl.DEPTH und gl.STENCIL.

Welchen Typ der Rückgabewert hat, hängt von pname ab. Frag deshalb immer zuerst FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE ab. Ist das Ergebnis gl.NONE, hängt nichts am Anhangspunkt. Die meisten anderen Abfragen lösen dann einen GL-Fehler aus und geben null zurück.

Parameter

Name Typ Default Beschreibung
$target Pflicht GLenum Bindungspunkt des Framebuffers. WebGL 1: nur gl.FRAMEBUFFER. WebGL 2: zusätzlich gl.DRAW_FRAMEBUFFER und gl.READ_FRAMEBUFFER. gl.FRAMEBUFFER entspricht dabei DRAW_FRAMEBUFFER.
$attachment Pflicht GLenum Anhangspunkt: gl.COLOR_ATTACHMENT0, gl.DEPTH_ATTACHMENT, gl.STENCIL_ATTACHMENT, gl.DEPTH_STENCIL_ATTACHMENT. Mit WEBGL_draw_buffers gibt es zusätzlich COLOR_ATTACHMENTi_WEBGL, in WebGL 2 gl.COLOR_ATTACHMENT1 bis gl.COLOR_ATTACHMENT15. Für den Standard-Framebuffer (nur WebGL 2) gibt es gl.BACK, gl.DEPTH und gl.STENCIL.
$pname Pflicht GLenum Abzufragende Information.
  • FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum, also NONE, TEXTURE, RENDERBUFFER oder (WebGL 2) FRAMEBUFFER_DEFAULT
  • FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: WebGLTexture oder WebGLRenderbuffer
  • FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLint
  • FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum
  • FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING (WebGL 2) bzw. …_EXT mit EXT_sRGB
  • FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE (WebGL 2) bzw. …_EXT mit WEBGL_color_buffer_float/EXT_color_buffer_half_float
  • Nur WebGL 2: FRAMEBUFFER_ATTACHMENT_RED_SIZE, …_GREEN_SIZE, …_BLUE_SIZE, …_ALPHA_SIZE, …_DEPTH_SIZE, …_STENCIL_SIZE, …_TEXTURE_LAYER
  • Mit OVR_multiview2: FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR und FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR

Rückgabewert

Typ
GLenum | GLint | WebGLTexture | WebGLRenderbuffer | null
Beschreibung
Der Typ hängt von pname ab. Bei Enums und Größen ist es eine Zahl, bei OBJECT_NAME das angehängte Objekt. Bei einem Fehler oder wenn nichts angehängt ist, ist der Rückgabewert null.