C++ 为什么在osg中添加了另一个相机后,该相机不仍然是另一个相机的子相机?

C++ 为什么在osg中添加了另一个相机后,该相机不仍然是另一个相机的子相机?,c++,opengl,openscenegraph,C++,Opengl,Openscenegraph,我正在编写一个基于OpenSceneGraph的程序,它使用两个摄像头,一个用于为用户呈现预览,另一个用于使用回调与MRT进行屏幕截图。导出器摄影机使用正交投影,并且始终从具有相同视图和上方向向量的相同位置,而预览摄影机可以由用户移动 启动程序后,我创建预览摄影机,将着色器添加到其中,然后设置查看器并将预览摄影机添加到其中 之后,我创建导出摄影机,添加其着色器、纹理和回调,然后将导出摄影机作为子对象添加到预览摄影机。到目前为止,尚未呈现任何内容(即未进行frame调用) 发出addChild调用

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

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

之后,我创建导出摄影机,添加其着色器、纹理和回调,然后将导出摄影机作为子对象添加到预览摄影机。到目前为止,尚未呈现任何内容(即未进行
frame
调用)

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

为什么会这样?除了再次添加exporter相机外,我如何修复它



旁注:我开始使用,这个问题是否适用于这一方面,或者它是针对算法而不是实现的?

如果您使用的是osg::View,它有自己的主摄像头和从摄像头实现-有关信息,请参阅osg::View标题或本旧教程的示例:

谢谢,这就回答了如何修复它的问题。遗憾的是,我的预览和导出相机没有使用相同的位置,出于某种原因,它总是绕着场景旋转90°,这使得正确设置它成为一大难题。