melonJS
    Preparing search index...

    Class PrimitiveCompositor

    since 18.1.0

    PrimitiveBatcher

    Hierarchy (View Summary)

    Index
    attributes: Object[] | undefined

    an array of vertex attribute properties

    WebGLBatcher.addAttribute

    currentSamplerUnit: number | undefined
    currentShader: GLShader | undefined

    the shader currently used by this batcher

    defaultShader: GLShader | undefined

    the default shader created by this batcher

    gl: any
    projectionUniform: string | undefined

    the name of the projection matrix uniform in the shader

    renderer: Renderer | undefined

    the renderer this batcher is bound to

    stride: number | undefined

    the stride of a single vertex in bytes (will automatically be calculated as attributes definitions are added)

    WebGLBatcher.addAttribute

    useIndexBuffer: boolean | undefined

    whether this batcher uses indexed drawing

    validatedShaders: WeakSet<object> | undefined
    vertexData: VertexArrayBuffer | undefined

    the vertex data buffer used by this batcher

    vertexSize: number | undefined

    the size of a single vertex in floats (will automatically be calculated as attributes definitions are added)

    WebGLBatcher.addAttribute

    vertexState: WebGLVertexState | null | undefined
    viewMatrix: Matrix3d | undefined
    • Add a vertex attribute to this batcher's layout.

      Accepts either vocabulary. The backend-neutral form names the component type and count in one token, which is what a non-WebGL backend can consume directly and what lets a layout be written without a live rendering context:

      batcher.addAttribute({ name: "aColor", format: "unorm8x4", offset: 20 });
      batcher.addAttribute("aColor", "unorm8x4", 20);

      The GL form is supported indefinitely and behaves exactly as before:

      batcher.addAttribute("aColor", 4, gl.UNSIGNED_BYTE, true, 20);
      

      Records keep both spellings, so existing readers of size / type / normalized are unaffected. A GL combination with no portable name — three-component 8- and 16-bit types, which the neutral vocabulary does not define — is stored with format: undefined rather than an invented name that a backend could not honour.

      The layout is frozen once init() has built the vertex state, and each record is frozen on insertion: a batcher rebuilds its vertex state from these records after a context loss, so a later mutation would take effect at restore time rather than where it was written.

      Parameters

      • name: string | object

        attribute name, or a descriptor object

      • Optionalsize: number | VertexFormat

        component count (GL form), or the format (neutral form)

      • Optionaltype: number

        component type (GL form), or the byte offset (neutral form)

      • Optionalnormalized: boolean

        whether integers are scaled into [0, 1] / [-1, 1] (GL form only)

      • Optionaloffset: number

        byte offset of the attribute within a vertex (GL form)

      • ...args: any[]

      Returns void

      when the layout is frozen, the format or GL type is unknown, or a descriptor contradicts itself

    • called by the WebGL renderer when this batcher is being replaced by another. Attribute state no longer needs disabling — it lives in this batcher's vertex-state object and the incoming batcher's bind() replaces the binding wholesale. Kept as a lifecycle hook: subclasses override it to restore mode-specific GL state (see MeshBatcher's blend/depth restore).

      Returns void