/** * WebGL 렌더러 시스템 * 인스턴스 렌더링 및 고급 렌더링 기능 제공 */ import { BufferHelper, VAOHelper } from "./geometry.js"; import { ShaderProgram } from "./shader.js"; import { TextureHelper } from "./texture.js"; /** * 도형 유형 열거형 */ export declare enum PrimitiveType { /** 점 */ POINTS = 0, /** 선 */ LINES = 1, /** 선 스트립 */ LINE_STRIP = 2, /** 선 루프 */ LINE_LOOP = 3, /** 삼각형 */ TRIANGLES = 4, /** 삼각형 스트립 */ TRIANGLE_STRIP = 5, /** 삼각형 팬 */ TRIANGLE_FAN = 6 } /** * 인스턴스 드로잉 파라미터 */ export interface InstancedDrawParams { /** VAO ID */ vaoId: string; /** 도형 유형 */ primitiveType: PrimitiveType; /** 요소 개수 */ count: number; /** 인덱스 사용 여부 */ indexed: boolean; /** 인스턴스 개수 */ instanceCount: number; /** 오프셋 */ offset?: number; /** 인덱스 타입 (인덱스 사용 시) */ indexType?: number; } /** * 렌더러 클래스 * WebGL 렌더링 기능 통합 */ export declare class Renderer { /** WebGL 컨텍스트 */ private gl; /** WebGL 2.0 여부 */ private isWebGL2; /** 버퍼 헬퍼 */ private bufferHelper; /** VAO 헬퍼 */ private vaoHelper; /** 텍스처 헬퍼 */ private textureHelper; /** 활성 셰이더 프로그램 */ private activeShader; /** VAO 맵 */ private vaoMap; /** 인스턴싱 확장 (WebGL 1.0) */ private instancedExt; /** * 생성자 * @param gl WebGL 컨텍스트 */ constructor(gl: WebGLRenderingContext | WebGL2RenderingContext); /** * 렌더러 초기화 * @param clearColor 배경색 (RGBA) */ init(clearColor?: [number, number, number, number]): void; /** * 화면 지우기 * @param clearBits 지울 버퍼 (기본: 색상+깊이) */ clear(clearBits?: number): void; /** * 뷰포트 설정 * @param x X 좌표 * @param y Y 좌표 * @param width 너비 * @param height 높이 */ setViewport(x: number, y: number, width: number, height: number): void; /** * VAO 등록 * @param id VAO ID * @param vao VAO 객체 */ registerVAO(id: string, vao: WebGLVertexArrayObject): void; /** * 셰이더 활성화 * @param shader 셰이더 프로그램 */ useShader(shader: ShaderProgram): void; /** * 인스턴스 렌더링 * @param params 인스턴스 드로잉 파라미터 * @returns 성공 여부 */ drawInstanced(params: InstancedDrawParams): boolean; /** * 일반 드로잉 * @param vaoId VAO ID * @param primitiveType 도형 유형 * @param count 요소 개수 * @param indexed 인덱스 사용 여부 * @param offset 오프셋 (기본: 0) * @param indexType 인덱스 타입 (인덱스 사용 시) * @returns 성공 여부 */ draw(vaoId: string, primitiveType: PrimitiveType, count: number, indexed?: boolean, offset?: number, indexType?: number): boolean; /** * 도형 유형을 WebGL 상수로 변환 * @param type 도형 유형 * @returns WebGL 도형 유형 상수 */ private getPrimitiveType; /** * 헬퍼 객체 가져오기 * @returns 헬퍼 객체 모음 */ getHelpers(): { buffer: BufferHelper; vao: VAOHelper; texture: TextureHelper; }; /** * 가비지 컬렉션 및 리소스 해제 */ dispose(): void; }