1 | import { MSAA_QUALITY } from '@pixi/constants';
|
2 | import { ExtensionType, extensions } from '@pixi/extensions';
|
3 |
|
4 | class MultisampleSystem {
|
5 | constructor(renderer) {
|
6 | this.renderer = renderer;
|
7 | }
|
8 | contextChange(gl) {
|
9 | let samples;
|
10 | if (this.renderer.context.webGLVersion === 1) {
|
11 | const framebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);
|
12 | gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
13 | samples = gl.getParameter(gl.SAMPLES);
|
14 | gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
|
15 | } else {
|
16 | const framebuffer = gl.getParameter(gl.DRAW_FRAMEBUFFER_BINDING);
|
17 | gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);
|
18 | samples = gl.getParameter(gl.SAMPLES);
|
19 | gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer);
|
20 | }
|
21 | if (samples >= MSAA_QUALITY.HIGH) {
|
22 | this.multisample = MSAA_QUALITY.HIGH;
|
23 | } else if (samples >= MSAA_QUALITY.MEDIUM) {
|
24 | this.multisample = MSAA_QUALITY.MEDIUM;
|
25 | } else if (samples >= MSAA_QUALITY.LOW) {
|
26 | this.multisample = MSAA_QUALITY.LOW;
|
27 | } else {
|
28 | this.multisample = MSAA_QUALITY.NONE;
|
29 | }
|
30 | }
|
31 | destroy() {
|
32 | }
|
33 | }
|
34 | MultisampleSystem.extension = {
|
35 | type: ExtensionType.RendererSystem,
|
36 | name: "_multisample"
|
37 | };
|
38 | extensions.add(MultisampleSystem);
|
39 |
|
40 | export { MultisampleSystem };
|
41 |
|