C#XNA-关闭/半关闭屏幕时渲染(?)3D对象。(挑选?)

C#XNA-关闭/半关闭屏幕时渲染(?)3D对象。(挑选?),c#,3d,xna,rendering,culling,C#,3d,Xna,Rendering,Culling,比如说,如果游戏地图的原点不在屏幕上,那么它就不会出现在XNA中 我在这上面找不到什么该死的东西。我已经研究过筛选,并试图将其以几种形式添加到项目中,以抵消这一点,但没有效果 我想在屏幕外绘制具有原点的对象,这样,如果它们部分位于屏幕上,它们仍然会显示出来。我将如何实现这一点 从我阅读的文档中,cull应该这样做,不是吗?我可怜的大脑 另一方面,如果有人有任何在XNA的Ox引擎中创建原语的经验,我很高兴听到你的消息 编辑:地狱火。。。我很确定这个问题只是牛的问题。该死的牛。我所有的仇恨捕杀是个概

比如说,如果游戏地图的原点不在屏幕上,那么它就不会出现在XNA中

我在这上面找不到什么该死的东西。我已经研究过筛选,并试图将其以几种形式添加到项目中,以抵消这一点,但没有效果

我想在屏幕外绘制具有原点的对象,这样,如果它们部分位于屏幕上,它们仍然会显示出来。我将如何实现这一点

从我阅读的文档中,cull应该这样做,不是吗?我可怜的大脑

另一方面,如果有人有任何在XNA的Ox引擎中创建原语的经验,我很高兴听到你的消息


编辑:地狱火。。。我很确定这个问题只是牛的问题。该死的牛。我所有的仇恨

捕杀是个概念,是的

您可能遇到的问题是用于剔除几何体的计算。系统不会自动知道对象有多大,因此在许多情况下(XNA处理对象的方式不是肯定的),它会使用原点作为剔除点,并假设对象无限小(如果原点在视口中,则对象可见,如果不在视口中,则对象不可见)


如果您可以告诉引擎为该对象生成或更新边界框(可能是AABB),则可以解决问题。还要检查是否有其他因素(如距离)起作用(尽管适当的界限通常也会解决距离问题)。

剔除是概念,是的

您可能遇到的问题是用于剔除几何体的计算。系统不会自动知道对象有多大,因此在许多情况下(XNA处理对象的方式不是肯定的),它会使用原点作为剔除点,并假设对象无限小(如果原点在视口中,则对象可见,如果不在视口中,则对象不可见)


如果您可以告诉引擎为该对象生成或更新边界框(可能是AABB),则可以解决问题。还要检查是否有其他因素(如距离)起作用(尽管适当的边界通常也会解决距离问题)。

XNA框架为您提供了BoundingFrustum类。它是一个边界结构,包含摄影机可以看到的体积。它在这个类中有方法来确定哪些其他对象是完全内部、外部或部分内部和外部的

它与另一个对象的原点无关。它针对另一个对象的边界结构进行测试


这些测试返回“包含、不相交、相交”的枚举。您只需剔除不相交的部分(完全位于平截头体外部),仍将绘制“半进半出”部分。

XNA框架为您提供了一个边界平截头体类。它是一个边界结构,包含摄影机可以看到的体积。它在这个类中有方法来确定哪些其他对象是完全内部、外部或部分内部和外部的

它与另一个对象的原点无关。它针对另一个对象的边界结构进行测试


这些测试返回“包含、不相交、相交”的枚举。您只需剔除不相交的部分(完全位于平截头体之外),仍将绘制“半进半出”部分。

我将立即研究这些要点。很高兴知道我在挑选方面走上了正确的道路,缺少工作正使我误入歧途。我现在将研究这些要点。很高兴知道我在挑选方面走的是正确的道路,它的缺乏使我误入歧途