/** * WebGL 텍스처 관리 시스템 * 텍스처 로딩, 생성 및 최적화를 위한 유틸리티 제공 */ /** * 텍스처 옵션 인터페이스 */ export interface TextureOptions { /** 너비 (이미지에서 자동 설정) */ width?: number; /** 높이 (이미지에서 자동 설정) */ height?: number; /** 내부 포맷 (WebGL2에서만 사용) */ internalFormat?: number; /** 포맷 (gl.RGB, gl.RGBA 등) */ format?: number; /** 타입 (gl.UNSIGNED_BYTE 등) */ type?: number; /** 밉맵 생성 여부 */ generateMipmap?: boolean; /** 매그니피케이션 필터 */ magFilter?: number; /** 미니피케이션 필터 */ minFilter?: number; /** 가로 랩 모드 */ wrapS?: number; /** 세로 랩 모드 */ wrapT?: number; /** 플립 Y 여부 */ flipY?: boolean; /** 프리멀티플라이드 알파 */ premultiplyAlpha?: boolean; } /** * 텍스처 로드 결과 */ export interface TextureLoadResult { /** 성공 여부 */ success: boolean; /** 텍스처 객체 (성공 시) */ texture?: WebGLTexture; /** 너비 (성공 시) */ width?: number; /** 높이 (성공 시) */ height?: number; /** 에러 메시지 (실패 시) */ errorMessage?: string; } /** * WebGL 텍스처 도우미 클래스 */ export declare class TextureHelper { /** WebGL 컨텍스트 */ private gl; /** WebGL2 컨텍스트 여부 */ private isWebGL2; /** 임시 캔버스 (텍스처 조작용) */ private canvas; /** 텍스처 캐시 */ private textureCache; /** 비동기 텍스처 로드 프로미스 */ private loadingTextures; /** * 생성자 * @param gl WebGL 렌더링 컨텍스트 */ constructor(gl: WebGLRenderingContext | WebGL2RenderingContext); /** * 이미지 URL에서 텍스처 로드 * @param url 이미지 URL * @param options 텍스처 옵션 * @returns 텍스처 로드 결과 프로미스 */ loadTexture(url: string, options?: TextureOptions): Promise; /** * 실제 텍스처 로딩 함수 * @param url 이미지 URL * @param options 텍스처 옵션 * @returns 텍스처 로드 결과 프로미스 */ private loadTextureInternal; /** * 이미지 객체 로딩 * @param url 이미지 URL * @returns 이미지 객체 프로미스 */ private loadImage; /** * 이미지에서 텍스처 생성 * @param image 이미지 소스 * @param options 텍스처 옵션 * @returns 텍스처 생성 결과 */ createTextureFromImage(image: HTMLImageElement | HTMLCanvasElement | ImageBitmap | OffscreenCanvas, options?: TextureOptions): TextureLoadResult; /** * 빈 텍스처 생성 * @param width 너비 * @param height 높이 * @param options 텍스처 옵션 * @returns 텍스처 생성 결과 */ createEmptyTexture(width: number, height: number, options?: TextureOptions): TextureLoadResult; /** * 텍스처 삭제 * @param texture 텍스처 객체 */ deleteTexture(texture: WebGLTexture): void; /** * 모든 텍스처 삭제 */ deleteAllTextures(): void; }