UNPKG

4.13 kBTypeScriptView Raw
1import {
2 CullFace,
3 Blending,
4 BlendingEquation,
5 BlendingSrcFactor,
6 BlendingDstFactor,
7 DepthModes,
8} from '../../constants';
9import { WebGLCapabilities } from './WebGLCapabilities';
10import { WebGLExtensions } from './WebGLExtensions';
11import { Material } from '../../materials/Material';
12import { Vector4 } from '../../math/Vector4';
13
14export class WebGLColorBuffer {
15 constructor();
16
17 setMask(colorMask: boolean): void;
18 setLocked(lock: boolean): void;
19 setClear(r: number, g: number, b: number, a: number, premultipliedAlpha: boolean): void;
20 reset(): void;
21}
22
23export class WebGLDepthBuffer {
24 constructor();
25
26 setTest(depthTest: boolean): void;
27 setMask(depthMask: boolean): void;
28 setFunc(depthFunc: DepthModes): void;
29 setLocked(lock: boolean): void;
30 setClear(depth: number): void;
31 reset(): void;
32}
33
34export class WebGLStencilBuffer {
35 constructor();
36
37 setTest(stencilTest: boolean): void;
38 setMask(stencilMask: number): void;
39 setFunc(stencilFunc: number, stencilRef: number, stencilMask: number): void;
40 setOp(stencilFail: number, stencilZFail: number, stencilZPass: number): void;
41 setLocked(lock: boolean): void;
42 setClear(stencil: number): void;
43 reset(): void;
44}
45
46export class WebGLState {
47 constructor(gl: WebGLRenderingContext, extensions: WebGLExtensions, capabilities: WebGLCapabilities);
48
49 buffers: {
50 color: WebGLColorBuffer;
51 depth: WebGLDepthBuffer;
52 stencil: WebGLStencilBuffer;
53 };
54
55 initAttributes(): void;
56 enableAttribute(attribute: number): void;
57 enableAttributeAndDivisor(attribute: number, meshPerAttribute: number): void;
58 disableUnusedAttributes(): void;
59 vertexAttribPointer(
60 index: number,
61 size: number,
62 type: number,
63 normalized: boolean,
64 stride: number,
65 offset: number,
66 ): void;
67 enable(id: number): void;
68 disable(id: number): void;
69 bindFramebuffer(target: number, framebuffer: WebGLFramebuffer | null): void;
70 bindXRFramebuffer(framebuffer: WebGLFramebuffer | null): void;
71 useProgram(program: any): boolean;
72 setBlending(
73 blending: Blending,
74 blendEquation?: BlendingEquation,
75 blendSrc?: BlendingSrcFactor,
76 blendDst?: BlendingDstFactor,
77 blendEquationAlpha?: BlendingEquation,
78 blendSrcAlpha?: BlendingSrcFactor,
79 blendDstAlpha?: BlendingDstFactor,
80 premultiplyAlpha?: boolean,
81 ): void;
82 setMaterial(material: Material, frontFaceCW: boolean): void;
83 setFlipSided(flipSided: boolean): void;
84 setCullFace(cullFace: CullFace): void;
85 setLineWidth(width: number): void;
86 setPolygonOffset(polygonoffset: boolean, factor?: number, units?: number): void;
87 setScissorTest(scissorTest: boolean): void;
88 activeTexture(webglSlot: number): void;
89 bindTexture(webglType: number, webglTexture: any): void;
90 unbindTexture(): void;
91 // Same interface as https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/compressedTexImage2D
92 compressedTexImage2D(
93 target: number,
94 level: number,
95 internalformat: number,
96 width: number,
97 height: number,
98 border: number,
99 data: ArrayBufferView,
100 ): void;
101 // Same interface as https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D
102 texImage2D(
103 target: number,
104 level: number,
105 internalformat: number,
106 width: number,
107 height: number,
108 border: number,
109 format: number,
110 type: number,
111 pixels: ArrayBufferView | null,
112 ): void;
113 texImage2D(target: number, level: number, internalformat: number, format: number, type: number, source: any): void;
114 texImage3D(
115 target: number,
116 level: number,
117 internalformat: number,
118 width: number,
119 height: number,
120 depth: number,
121 border: number,
122 format: number,
123 type: number,
124 pixels: any,
125 ): void;
126 scissor(scissor: Vector4): void;
127 viewport(viewport: Vector4): void;
128 reset(): void;
129}