XNA,咬合剔除和碰撞检测

我已经整理了一个四叉树/ BSP混合原型来测试引擎中的碰撞检测和遮挡剔除,用于我正在组合的XNA游戏。 据我了解,硬件加速给我们的一个优化是能够在卡上存储顶点和索引列表,因此绘制相关几何体的调用不必为每个帧发送模型数据。 在具有大量几何的级别中,如何在XNA中管理它?例如,如果我在OpenGL中工作,我会保留一张卡片中的内容列表,然后发送需要更新的内容。但是,XNA框架的高抽象级别似乎将其封装到我无法管理它的程度。 告诉我为什么我错了,或者为什么我不应该担心。     
已邀请:

bab

在XNA中,图形驱动程序根据您指定的缓冲区的属性决定顶点和索引缓冲区最适合的内存。您可以选择影响存储缓冲区的位置包括: 是使用动态缓冲区还是普通缓冲区 “在游戏经常修改顶点缓冲区的情况下,建议实例化缓冲区或从DynamicVertexBuffer而不是VertexBuffer类派生缓冲区。” 创建时的用法参数 缓冲区 只写 “表示应用程序仅写入顶点缓冲区。如果指定,驱动程序将选择最佳内存位置以进行高效写入和渲染。尝试从只写顶点缓冲区读取失败。” 摘要 根据您提供的有关如何使用缓冲区的信息,图形驱动程序通常能够比在何处找到缓冲区做出更好的决策。这是因为它知道每种类型的内存有多少可用,以及该特定系统的内存性能特征。 注意:对于XNA 3.1及更低版本的动态顶点和放大器在xbox上的索引数据,将数据存储在托管数组中并使用DrawUserPrimitives比使用DynamicVertexBuffer或DynamicIndexBuffer更快。 如果最终使用动态缓冲区,则必须注意在使用SetData时不要使管道停滞。有关详细信息,请参见http://blogs.msdn.com/b/shawnhar/archive/2008/04/15/stalls-part-two-beware-of-setdata.aspx。     

要回复问题请先登录注册