/** * WebGL 지오메트리 처리 시스템 * VAO 및 버퍼 관리를 위한 유틸리티 제공 */ import { BufferParams, VAOParams, WebGLBufferType } from "../types.js"; /** * 버퍼 생성 결과 */ export interface BufferCreateResult { /** 성공 여부 */ success: boolean; /** 에러 메시지 (실패 시) */ errorMessage?: string; /** 버퍼 객체 (성공 시) */ buffer?: WebGLBuffer; } /** * VAO 생성 결과 */ export interface VAOCreateResult { /** 성공 여부 */ success: boolean; /** 에러 메시지 (실패 시) */ errorMessage?: string; /** VAO 객체 (성공 시) */ vao?: WebGLVertexArrayObject; } /** * WebGL 버퍼 도우미 클래스 * 버퍼 생성 및 관리를 위한 유틸리티 */ export declare class BufferHelper { /** WebGL 컨텍스트 */ private gl; /** * 생성자 * @param gl WebGL 렌더링 컨텍스트 */ constructor(gl: WebGLRenderingContext | WebGL2RenderingContext); /** * 버퍼 생성 * @param params 버퍼 파라미터 * @returns 생성 결과 */ createBuffer(params: BufferParams): BufferCreateResult; /** * 버퍼 데이터 업데이트 * @param type 버퍼 타입 * @param buffer 버퍼 객체 * @param data 새 데이터 * @param offset 오프셋 (기본값: 0) * @returns 성공 여부 */ updateBufferData(type: WebGLBufferType, buffer: WebGLBuffer, data: Float32Array | Uint16Array | Uint32Array, offset?: number): boolean; /** * 버퍼 삭제 * @param buffer 버퍼 객체 */ deleteBuffer(buffer: WebGLBuffer): void; /** * 버퍼 타입을 WebGL 상수로 변환 * @param type 버퍼 타입 * @returns WebGL 버퍼 타입 상수 */ private getBufferTarget; /** * 버퍼 사용법을 WebGL 상수로 변환 * @param usage 버퍼 사용법 * @returns WebGL 버퍼 사용법 상수 */ private getBufferUsage; } /** * VAO 도우미 클래스 * 버텍스 배열 객체 관리를 위한 유틸리티 */ export declare class VAOHelper { /** WebGL 컨텍스트 */ private gl; /** WebGL2 컨텍스트 여부 */ private isWebGL2; /** VAO 확장 (WebGL1) */ private vaoExtension; /** * 생성자 * @param gl WebGL 렌더링 컨텍스트 */ constructor(gl: WebGLRenderingContext | WebGL2RenderingContext); /** * VAO 생성 가능 여부 확인 * @returns VAO 지원 여부 */ isVAOSupported(): boolean; /** * VAO 생성 * @param params VAO 파라미터 * @param buffers 버퍼 맵 * @returns 생성 결과 */ createVAO(params: VAOParams, buffers: Map): VAOCreateResult; /** * VAO 바인딩 * @param vao VAO 객체 */ bindVAO(vao: WebGLVertexArrayObject): void; /** * VAO 바인딩 해제 */ unbindVAO(): void; /** * VAO 삭제 * @param vao VAO 객체 */ deleteVAO(vao: WebGLVertexArrayObject): void; }