javascript - How to toggle preserveDrawingBuffer in three.js? -
basically, want setup go preservedrawingbuffer=true, render scene once, grab screenshot, , go back. however, poses 2 problems:
- there no method in renderer dispose buffers,
canvas goes black if do
renderer = new three.webglrenderer({canvas:renderer.domelement,preservedrawingbuffer:true});
how do properly?
edit: did not find way toggle this, had clone scene , create second renderer instead make screenshot. see https://github.com/mrdoob/three.js/issues/189
you don't need preservedrawingbuffer: true take screenshot. need take screenshot after rendering. screenshot guaranteed work long take after rendering before exiting current event.
so example work
renderer.render( scene, camera ); var screenshot = renderer.domelement.todataurl(); whereas work randomly if you're luck
someelement.addeventlistener('click', function() { // not after rendering. have no // idea when relative rendering. var screenshot = renderer.domelement.todataurl(); }); most of three.js examples have render function if need take screenshot when user requests 1 this
someelement.addeventlistener('click', function() { render(); var screenshot = renderer.domelement.todataurl(); }); or this
var takescreenshot; function render() { ... if (takescreenshot) { takescreenshot = false; var screenshot = renderer.domelement.todataurl(); } } someelement.addeventlistener('click', function() { takescreenshot = true; }); or number of other ways make sure take screenshot after rendering.
Comments
Post a Comment