@thi.ng/webgl
Version:
WebGL & GLSL abstraction layer
60 lines • 1.98 kB
TypeScript
import type { IBind, IRelease } from "@thi.ng/api";
import type { ITexture } from "./texture.js";
export type IndexBufferData = Uint16Array | Uint32Array;
export interface IWebGLBuffer<T> extends IBind<void>, IRelease {
set(data: T, mode?: GLenum): void;
setChunk(data: T, byteOffset: number): void;
update(): void;
}
export interface IConfigure<T> {
configure(opts: T): boolean;
}
export interface IFbo extends IBind<void>, IConfigure<Partial<FboOpts>>, IRelease {
}
export interface IRenderBuffer extends IBind<void>, IRelease {
buffer: WebGLRenderbuffer;
format: GLenum;
width: number;
height: number;
}
export interface IndexBufferSpec {
/**
* Backing WebGLBuffer instance. Usually this will be
* auto-initialized by `makeBuffersInSpec`
*/
buffer?: IWebGLBuffer<IndexBufferData>;
/**
* Raw attribute data from which `buffer` will be initialized
*/
data: IndexBufferData;
/**
* Only used if {@link IndexBufferSpec.buffer} is being auto-generated.
* If true (default: false), the buffer will retain a handler to the given
* {@link IndexBufferSpec.data} array and can be later conveniently
* updated via {@link WebGLArrayBuffer.update}.
*
* @defaultValue false
*/
retain?: boolean;
}
export interface FboOpts {
/**
* Array of Texture instances to be used as color attachments.
* Multiple attachments are only allowed if the `webgl_draw_buffers`
* extension is available. The texture at `[0]` will be mapped to
* `COLOR_ATTACHMENT0` (or `COLOR_ATTACHMENT0_WEBGL`), other indices
* are mapped to their respective attachment IDs.
*/
tex: ITexture[];
/**
* Optional pre-instantiated {@link RBO} to be used as depth buffer
* for this FBO.
*/
depth?: ITexture | IRenderBuffer;
}
export interface RboOpts {
format?: number;
width: number;
height: number;
}
//# sourceMappingURL=buffers.d.ts.map