UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

97 lines 5.61 kB
import { TgdColor } from "../color"; import { TgdContext } from "../context"; import { TgdEvent } from "../event"; import type { TgdFilter } from "../filter"; import { TgdVec4 } from "../math"; import { TgdProgram } from "../program"; import { ArrayNumber4, type WebglImage, type WebglTexParameter } from "../types"; import { type WebglTextureParameters } from "../webgl"; import { type LoadBmpOptions } from "./types"; interface TgdTexture2DStorage { width: number; height: number; levels: number; flipY: boolean; /** * Do we want to use premultiplied alpha? * Default to `false`. */ premultipliedAlpha: boolean; format: "R8 / RED / UNSIGNED_BYTE" | "R8_SNORM / RED / BYTE" | "R16F / RED / HALF_FLOAT" | "R16F / RED / FLOAT" | "R32F / RED / FLOAT" | "R8UI / RED_INTEGER / UNSIGNED_BYTE" | "R8I / RED_INTEGER / BYTE" | "R16UI / RED_INTEGER / UNSIGNED_SHORT" | "R16I / RED_INTEGER / SHORT" | "R32UI / RED_INTEGER / UNSIGNED_INT" | "R32I / RED_INTEGER / INT" | "RG8 / RG / UNSIGNED_BYTE" | "RG8_SNORM / RG / BYTE" | "RG16F / RG / HALF_FLOAT" | "RG16F / RG / FLOAT" | "RG32F / RG / FLOAT" | "RG8UI / RG_INTEGER / UNSIGNED_BYTE" | "RG8I / RG_INTEGER / BYTE" | "RG16UI / RG_INTEGER / UNSIGNED_SHORT" | "RG16I / RG_INTEGER / SHORT" | "RG32UI / RG_INTEGER / UNSIGNED_INT" | "RG32I / RG_INTEGER / INT" | "RGB8 / RGB / UNSIGNED_BYTE" | "SRGB8 / RGB / UNSIGNED_BYTE" | "RGB565 / RGB / UNSIGNED_BYTE" | "RGB565 / RGB / UNSIGNED_SHORT_5_6_5" | "RGB8_SNORM / RGB / BYTE" | "R11F_G11F_B10F / RGB / UNSIGNED_INT_10F_11F_11F_REV" | "R11F_G11F_B10F / RGB / HALF_FLOAT" | "R11F_G11F_B10F / RGB / FLOAT" | "RGB9_E5 / RGB / UNSIGNED_INT_5_9_9_9_REV" | "RGB9_E5 / RGB / HALF_FLOAT" | "RGB9_E5 / RGB / FLOAT" | "RGB16F / RGB / HALF_FLOAT" | "RGB16F / RGB / FLOAT" | "RGB32F / RGB / FLOAT" | "RGB8UI / RGB_INTEGER / UNSIGNED_BYTE" | "RGB8I / RGB_INTEGER / BYTE" | "RGB16UI / RGB_INTEGER / UNSIGNED_SHORT" | "RGB16I / RGB_INTEGER / SHORT" | "RGB32UI / RGB_INTEGER / UNSIGNED_INT" | "RGB32I / RGB_INTEGER / INT" | "RGBA8 / RGBA / UNSIGNED_BYTE" | "SRGB8_ALPHA8 / RGBA / UNSIGNED_BYTE" | "RGBA8_SNORM / RGBA / BYTE" | "RGB5_A1 / RGBA / UNSIGNED_BYTE" | "RGB5_A1 / RGBA / UNSIGNED_SHORT_5_5_5_1" | "RGB5_A1 / RGBA / UNSIGNED_INT_2_10_10_10_REV" | "RGBA4 / RGBA / UNSIGNED_BYTE" | "RGBA4 / RGBA / UNSIGNED_SHORT_4_4_4_4" | "RGB10_A2 / RGBA / UNSIGNED_INT_2_10_10_10_REV" | "RGBA16F / RGBA / HALF_FLOAT" | "RGBA16F / RGBA / FLOAT" | "RGBA32F / RGBA / FLOAT" | "RGBA8UI / RGBA_INTEGER / UNSIGNED_BYTE" | "RGBA8I / RGBA_INTEGER / BYTE" | "RGBA16UI / RGBA_INTEGER / UNSIGNED_SHORT" | "RGBA16I / RGBA_INTEGER / SHORT" | "RGBA32UI / RGBA_INTEGER / UNSIGNED_INT" | "RGBA32I / RGBA_INTEGER / INT" | "DEPTH_COMPONENT16 / DEPTH_COMPONENT / UNSIGNED_SHORT" | "DEPTH_COMPONENT16 / DEPTH_COMPONENT / UNSIGNED_INT" | "DEPTH_COMPONENT24 / DEPTH_COMPONENT / UNSIGNED_INT" | "DEPTH_COMPONENT32F / DEPTH_COMPONENT / FLOAT" | "DEPTH24_STENCIL8 / DEPTH_STENCIL / UNSIGNED_INT_24_8" | "DEPTH32F_STENCIL8 / DEPTH_STENCIL / FLOAT_32_UNSIGNED_INT_24_8_REV"; } export interface TgdTexture2DOptions { name?: string; storage?: Partial<TgdTexture2DStorage>; params?: WebglTextureParameters; load?: WebglImage | string | LoadBmpOptions; filter?: TgdFilter; /** * The texture starts as a 1x1 black transparent pixel. * You can specify another color with this. */ color?: ArrayNumber4 | TgdVec4 | TgdColor; } export declare class TgdTexture2D { readonly context: TgdContext; private readonly options; name: string; readonly gl: WebGL2RenderingContext; readonly eventChange: TgdEvent<TgdTexture2D>; private _texture; private _width; private _height; private readonly storage; private params; private videoUpdater; private static counter; constructor(context: TgdContext, options?: TgdTexture2DOptions); clone(name?: string): TgdTexture2D; get format(): TgdTexture2DStorage["format"]; private set format(value); get internalFormat(): number; get sourceFormat(): number; get sourceType(): number; delete(): void; get width(): number; get height(): number; private createTexture; private splitFormat; resize(w: number, h: number): void; private checkError; get glTexture(): WebGLTexture; bind(): void; unbind(): void; loadVideo(url: string, options?: { onLoad?: () => void; }): this; loadBitmap(bmp: string | WebglImage | null | Promise<WebglImage | null> | undefined, options?: { level?: number; generateMipmap?: boolean; onLoad?: () => void; }): this; applyFilter(filter: TgdFilter): this; loadData(data: Uint8Array | Uint8ClampedArray | Float32Array, options: { width: number; height: number; level?: number; offset?: number; format?: TgdTexture2DStorage["format"]; }): this; /** * * @param unit Unit to link the texture to * @param program The program or uniform block object that owns the uniform to update * @param uniformName The uniform that holds the texture */ activate(unit: number, program?: TgdProgram, uniformName?: string): this; generateMipmap(): this; setParams(parameters: WebglTextureParameters): this; set textureBaseLevel(value: number); get textureBaseLevel(): number; set textureMaxLevel(value: number); get textureMaxLevel(): number; getParameter(parameter: WebglTexParameter): number | boolean | null; debug(title?: string): void; } export {}; //# sourceMappingURL=texture2d.d.ts.map