For me it looks like this functionality is somewhat broken at the moment.
I tried with
win = base.openWindow(type="offscreen")
but it throws an error.
Then I tried to do by hand what ShowBase does:
from panda3d.core import loadPrcFileData
loadPrcFileData("", "window-type none" )
loadPrcFileData("", "audio-library-name null" )
from panda3d.core import GraphicsPipe, WindowProperties, FrameBufferProperties
import direct.directbase.DirectStart
flags = GraphicsPipe.BFFbPropsOptional | GraphicsPipe.BFRefuseWindow
props = WindowProperties.getDefault()
fbprops = FrameBufferProperties.getDefault()
base.makeDefaultPipe()
buff = base.graphicsEngine.makeOutput(pipe=base.pipe, name="rendering buffer", sort=0, fb_prop=fbprops, win_prop=props, flags=flags)
assert buff is not None # AssertionError
but still it seems Panda is unable to open an offscreen buffer only.