The solution I found for saving in high resolution is to get away from the snapshot3d function and use rgl.postscript to save in a vector format like svg. This allows me to rasterize later with the resolution I want.
Example:
rgl.postscript("graph.svg", fmt="svg")
The rgl.snapshot function really captures a snapshot from the device, and I think there is no way to break the boundaries of the screen using this function if, as Ben Bolker points out in the comments (thanks), a virtual frame buffer is used.
source share