Skip to content

Commit e489e5a

Browse files
authored
setup canvas on first capture screenshot.js (#5442)
* setup canvas on first capture screenshot.js * Update screenshot.js * Update screenshot.js * Update screenshot.js * Update screenshot.js * Update screenshot.js * Update screenshot.js * Update screenshot.js * Update screenshot.js
1 parent 3f5ab6b commit e489e5a

File tree

1 file changed

+22
-30
lines changed

1 file changed

+22
-30
lines changed

src/components/scene/screenshot.js

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -50,37 +50,28 @@ module.exports.Component = registerComponent('screenshot', {
5050
camera: {type: 'selector'}
5151
},
5252

53-
init: function () {
53+
setup: function () {
5454
var el = this.el;
55-
var self = this;
56-
57-
if (el.renderer) {
58-
setup();
59-
} else {
60-
el.addEventListener('render-target-loaded', setup);
61-
}
62-
63-
function setup () {
64-
var gl = el.renderer.getContext();
65-
if (!gl) { return; }
66-
self.cubeMapSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);
67-
self.material = new THREE.RawShaderMaterial({
68-
uniforms: {map: {type: 't', value: null}},
69-
vertexShader: VERTEX_SHADER,
70-
fragmentShader: FRAGMENT_SHADER,
71-
side: THREE.DoubleSide
72-
});
73-
self.quad = new THREE.Mesh(
74-
new THREE.PlaneGeometry(1, 1),
75-
self.material
76-
);
77-
self.quad.visible = false;
78-
self.camera = new THREE.OrthographicCamera(-1 / 2, 1 / 2, 1 / 2, -1 / 2, -10000, 10000);
79-
self.canvas = document.createElement('canvas');
80-
self.ctx = self.canvas.getContext('2d');
81-
el.object3D.add(self.quad);
82-
self.onKeyDown = self.onKeyDown.bind(self);
83-
}
55+
if (this.canvas) { return; }
56+
var gl = el.renderer.getContext();
57+
if (!gl) { return; }
58+
this.cubeMapSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);
59+
this.material = new THREE.RawShaderMaterial({
60+
uniforms: {map: {type: 't', value: null}},
61+
vertexShader: VERTEX_SHADER,
62+
fragmentShader: FRAGMENT_SHADER,
63+
side: THREE.DoubleSide
64+
});
65+
this.quad = new THREE.Mesh(
66+
new THREE.PlaneGeometry(1, 1),
67+
this.material
68+
);
69+
this.quad.visible = false;
70+
this.camera = new THREE.OrthographicCamera(-1 / 2, 1 / 2, 1 / 2, -1 / 2, -10000, 10000);
71+
this.canvas = document.createElement('canvas');
72+
this.ctx = this.canvas.getContext('2d');
73+
el.object3D.add(this.quad);
74+
this.onKeyDown = this.onKeyDown.bind(this);
8475
},
8576

8677
getRenderTarget: function (width, height) {
@@ -181,6 +172,7 @@ module.exports.Component = registerComponent('screenshot', {
181172
var isVREnabled = this.el.renderer.xr.enabled;
182173
var renderer = this.el.renderer;
183174
var params;
175+
this.setup();
184176
// Disable VR.
185177
renderer.xr.enabled = false;
186178
params = this.setCapture(projection);

0 commit comments

Comments
 (0)