-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
/
IRenderer.ts
151 lines (140 loc) · 6.53 KB
/
IRenderer.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
import type { RENDERER_TYPE } from '@pixi/constants';
import type { Matrix, Rectangle, Transform } from '@pixi/math';
import type { ICanvas } from '@pixi/settings';
import type { IRendererPlugins } from './plugin/PluginSystem';
import type { IGenerateTextureOptions } from './renderTexture/GenerateTextureSystem';
import type { RenderTexture } from './renderTexture/RenderTexture';
import type { SystemManager } from './system/SystemManager';
import type { ImageSource } from './textures/BaseTexture';
/**
* Interface for DisplayObject to interface with Renderer.
* The minimum APIs needed to implement a renderable object.
* @memberof PIXI
*/
export interface IRenderableObject extends GlobalMixins.IRenderableObject
{
/** Object must have a parent container */
parent: IRenderableContainer;
/** Object must have a transform */
transform: Transform;
/** Before method for transform updates */
enableTempParent(): IRenderableContainer;
/** Update the transforms */
updateTransform(): void;
/** After method for transform updates */
disableTempParent(parent: IRenderableContainer): void;
/** Render object directly */
render(renderer: IRenderer): void;
}
/**
* Interface for Container to interface with Renderer.
* @memberof PIXI
*/
export interface IRenderableContainer extends IRenderableObject
{
/** Get Local bounds for container */
getLocalBounds(rect?: Rectangle, skipChildrenUpdate?: boolean): Rectangle;
}
/** Mixed WebGL1/WebGL2 Rendering Context. Either its WebGL2, either its WebGL1 with PixiJS polyfills on it */
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface IRenderingContext extends WebGL2RenderingContext
{
texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint,
format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum,
source: TexImageSource | ImageSource): void;
texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint,
format: GLenum, type: GLenum, pboOffset: GLintptr): void;
texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint,
format: GLenum, type: GLenum, source: TexImageSource | ImageSource): void;
texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint,
format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei,
format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;
texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum,
source: TexImageSource | ImageSource): void;
texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei,
format: GLenum, type: GLenum, pboOffset: GLintptr): void;
texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei,
format: GLenum, type: GLenum, source: TexImageSource | ImageSource): void;
texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei,
format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;
texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint,
width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;
texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint,
width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum,
source: TexImageSource | ImageSource): void;
texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint,
width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum,
srcData: ArrayBufferView | null, srcOffset?: GLuint): void;
}
export interface IRendererOptions extends GlobalMixins.IRendererOptions
{
width?: number;
height?: number;
view?: ICanvas;
/**
* Use premultipliedAlpha and backgroundAlpha instead
* @deprecated since 7.0.0
*/
useContextAlpha?: boolean | 'notMultiplied';
autoDensity?: boolean;
antialias?: boolean;
resolution?: number;
preserveDrawingBuffer?: boolean;
clearBeforeRender?: boolean;
backgroundColor?: number | string;
background?: number | string;
backgroundAlpha?: number;
premultipliedAlpha?: boolean;
powerPreference?: WebGLPowerPreference;
context?: IRenderingContext;
hello?: boolean;
}
export interface IRendererRenderOptions
{
renderTexture?: RenderTexture;
blit?: boolean
clear?: boolean;
transform?: Matrix;
skipUpdateTransform?: boolean;
}
/**
* Starard Interface for a Pixi renderer.
* @memberof PIXI
*/
export interface IRenderer<VIEW extends ICanvas = ICanvas> extends SystemManager, GlobalMixins.IRenderer
{
resize(width: number, height: number): void;
render(displayObject: IRenderableObject, options?: IRendererRenderOptions): void;
generateTexture(displayObject: IRenderableObject, options?: IGenerateTextureOptions): RenderTexture;
destroy(removeView?: boolean): void;
clear(): void;
reset(): void;
/**
* The type of the renderer.
* @see PIXI.RENDERER_TYPE
*/
readonly type: RENDERER_TYPE
/** When logging Pixi to the console, this is the name we will show */
readonly rendererLogId: string
/** The canvas element that everything is drawn to.*/
readonly view: VIEW
/** Flag if we are rendering to the screen vs renderTexture */
readonly renderingToScreen: boolean
/** The resolution / device pixel ratio of the renderer. */
readonly resolution: number
/** the width of the screen */
readonly width: number
/** the height of the screen */
readonly height: number
/**
* Measurements of the screen. (0, 0, screenWidth, screenHeight).
* Its safe to use as filterArea or hitArea for the whole stage.
*/
readonly screen: Rectangle
/** the last object rendered by the renderer. Useful for other plugins like interaction managers */
readonly lastObjectRendered: IRenderableObject
/** Collection of plugins */
readonly plugins: IRendererPlugins
}