我目前正在做一个 XNA 项目,我需要创建一个画中画叠加来从多个角度显示 3D 场景。目前我正在尝试使用 2 个视口来执行此操作。主要的填满整个屏幕并按需要工作。第二个放置在第一个角的一个角中(与该角重叠),并且小于第一个大小的五分之一。除了视口的大小和位置之外,两者之间唯一真正的区别是它们的相机在场景中的位置。
只要第二个视口是第二个绘制的,并且在重叠的角落中没有靠近第一个视口的相机的物体,这实际上工作得更好。但是,如果有一个对象靠近相机并且在第一个视口的角落,对象似乎会因为第一个视口的对象而经历遮挡剔除。但是,第一个视口的遮挡对象并未显示在第二个视口空间中。
我的问题是如何防止“跨视口剔除”的发生?我已经搜索了所有内容,我可以找到的关闭线程建议将第二个视口绘制到 RenderTarget2D 并使用 SpriteBatch 显示生成的纹理。虽然这样做确实解决了遮挡问题,但它确实对 z 排序、CCW 剔除和我的水效果造成了混乱,所有这些我在使用默认渲染目标时从未遇到过问题。