@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
97 lines • 5.61 kB
TypeScript
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