Equivalent of render2d using makeCamera2d

I’m trying to do some 2d rendering to an off-screen buffer. I’d like to use makeCamera2d, but I can’t get it working right.

In the Sample Program Cartoon-Shader, I’ve been playing around with removing the line:

    drawnScene.reparentTo(render2d)

and replacing it with something like:
drawnScene.reparentTo(render)
camera2d = base.makeCamera2d(base.win)
camera2d.node().setScene(render)

but that doesn’t work… I figure it’s got to be close to it but I’m not sure what.

Any ideas?

Hmm, in general, that looks about right–assuming that by “something like” you mean you are not actually using render and base.win, since render is a global that refers to the already-existing 3-d scene graph, and base.win refers to your main window.

If you’re creating an offscreen buffer, it should look something like this:

myBuffer = (..make buffer..)
myScene = NodePath('root')
drawnScene.reparentTo(myScene)
camera2d = base.makeCamera2d(myBuffer)
camera2d.reparentTo(myScene)

Note that reparentTo() is usually preferred to setScene() for cameras, since it’s easier to understand.

David