@@ -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