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

时间:2011-03-26 01:53:13

标签: c# 3d xna rendering culling

如果它们的原点不在屏幕上,那么游戏地图就会在XNA中完全没有出现。

我找不到这个血腥的东西。我已经研究过剔除并试图以一些形式将它添加到项目中以抵消这一点,但无济于事。

我想绘制屏幕上有原点的对象,这样如果它们部分在屏幕上,它们仍会显示。我怎么做到这一点?

从文档中我读到cull应该这样做,不应该吗?我脑部不好(._。)

另一方面,如果有人在Ox Engine for XNA中创建原语有任何经验,我很高兴收到你的来信。

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

2 个答案:

答案 0 :(得分:1)

剔除是概念,是的。

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

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

答案 1 :(得分:0)

XNA框架为您提供了BoundingFrustum类。它是一个包含相机可以看到的音量的边界结构。它具有此类中的方法来确定其他对象完全在其内部,外部或部分位于&进行。

它与其他对象的起源无关。它测试另一个对象的边界结构。

这些测试返回“包含,不相交,相交”的枚举。你只是剔除那些不相交的(完全在平截头体之外)并且仍然会画出“一半/一半”的那些。