1

非常大的对象,比如游戏地图,如果它们的原点不在屏幕上,XNA 将完全不会出现。

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

我想绘制在屏幕外有起源的对象,这样如果它们部分在屏幕上,它们仍然会显示出来。我将如何实现这一目标?

从我阅读的文档中 cull 应该这样做,不是吗?我可怜的大脑问题(._.)

附带说明一下,如果有人有在 XNA 的 Ox 引擎中创建原语的经验,我会很高兴收到您的来信。

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

4

2 回答 2

1

剔除是一个概念,是的。

您可能遇到的问题是用于剔除几何图形的计算。系统不会自动知道一个对象有多大,所以在很多情况下(XNA 如何处理它),它会使用原点作为剔除点并假设对象无限小(如果原点在视口内)对象是可见的,如果不可见,则不可见)。

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

于 2011-03-26T01:57:04.447 回答
0

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

它与另一个对象的起源在哪里无关。它针对另一个对象的边界结构进行测试。

这些测试返回一个“包含、不相交、相交”的枚举。您只需剔除那些不相交的(完全在截锥体之外),仍然会绘制“半进/半出”的那些。

于 2011-03-26T13:05:14.927 回答