我目前正在尝试将特定区域中 ThreeJS 的屏幕截图保存到文件中。
到目前为止,我只是尝试将图像显示到新选项卡中,我已经可以使用它了
window.open(renderer.domElement.toDataURL("image/png"));
Run Code Online (Sandbox Code Playgroud)
渲染器是一个 THREE.WebGLRenderer 对象,其preserveDrawingBuffer: true
但这使用了整个场景,所以我切换到:
var gl = renderer.getContext();
var pixels = new Uint8Array(width * height * 4);
gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
window.open("data:image/png;base64," + btoa(String.fromCharCode.apply(null, pixels)));
Run Code Online (Sandbox Code Playgroud)
这样做,除了灰色轮廓的正方形之外,没有任何东西被渲染