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

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -