为什么在 osg 中添加相机后相机不再是另一个相机的子相机?

Why does the camera not remain child of the other camera after adding it in osg?

我正在编写一个基于 OpenSceneGraph 的程序,该程序使用两个摄像头,一个用于为用户呈现预览,另一个使用回调通过 MRT 制作屏幕截图。导出器相机使用正交投影,并且始终使用相同的视图和向上矢量从相同的位置开始,而预览相机可以由用户移动。

启动程序后,我创建了预览相机,将着色器添加到其中,然后设置查看器并将预览相机添加到其中。

之后我创建导出相机,添加它的着色器、纹理和回调,然后我将导出相机作为子相机添加到预览相机。到目前为止,还没有渲染任何内容(即没有进行 frame 调用)。

发出 addChild 调用(即在 VS 中达到断点,进一步我可以看到导出器相​​机现在是预览相机的子级)。但是,一旦我发出命令实际制作屏幕截图,导出器相机就不再是预览相机的子级(到目前为止,已经进行了一些渲染调用)。

为什么会这样,除了再次添加导出器相机之外,我该如何解决?


旁注:我开始使用 computergraphics.stackexchange.com,这个问题是否适合那方面,或者它是针对算法而不是实现?

如果您使用的是 osg::View,它有自己的主从相机实现 - 请参阅 osg::View headers 了解信息或查看此旧教程的示例:http://thermalpixel.github.io/osg/2014/02/15/rtt-with-slave-cameras.html