- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经组装了一个四叉树/BSP 混合原型(prototype)来测试我正在组装的 XNA 游戏引擎中的碰撞检测和遮挡剔除。
据我了解,硬件加速为我们提供的优化之一是能够在卡上存储顶点和索引列表,因此绘制关联几何图形的调用不必为每一帧发送模型数据.
在具有很多 几何体的关卡中,您如何在 XNA 中管理它?例如,如果我在 OpenGL 中工作,我会维护一张卡中内容的列表,然后只发送需要更新的内容。然而,XNA 框架的高抽象级别似乎将其封装到我无法管理的程度。
告诉我为什么我错了,或者为什么我不应该担心。
最佳答案
在 XNA 中,图形驱动程序根据您指定的缓冲区的属性来决定您的顶点和索引缓冲区最适合位于哪个内存中。您可以做出的影响缓冲区存储位置的选择包括:
“在您的游戏频繁修改顶点缓冲区的情况下,建议从 DynamicVertexBuffer 而不是 VertexBuffer 类实例化或派生缓冲区。”
只写“表示应用程序只写入顶点缓冲区。如果指定,驱动程序会选择最佳内存位置以进行高效写入和渲染。尝试从只写顶点缓冲区读取失败。”
根据您提供的有关缓冲区将如何使用的信息,图形驱动程序通常能够比您更好地决定缓冲区的位置。这是因为它知道每种类型的内存有多少可用以及该特定系统的内存性能特征。
注意:对于 xbox 上具有动态顶点和索引数据的 XNA 3.1 及更低版本,将数据存储在托管数组中并使用 DrawUserPrimitives 比使用 DynamicVertexBuffer 或 DynamicIndexBuffer 更快。
如果您最终使用了动态缓冲区,则在使用 SetData 时必须小心不要停止管道。参见 http://blogs.msdn.com/b/shawnhar/archive/2008/04/15/stalls-part-two-beware-of-setdata.aspx了解详情。
关于c# - XNA,遮挡剔除和碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3704806/
我有一个充满体素的世界,假设我的世界是 320*320*96 体素。我的想法是将整个世界加载到我的视频卡的内存中,这样在将新的“ block ”传输到 GPU 时就不会损失性能。为显示体素世界而生成的
我不知道如何告诉 libgdx 在透明贴花后面绘制绿色球体。 这是我的问题的示例图片: 贴花创建:前两个参数是宽度和高度,最后一个标志是透明与否。 Decal.newDecal(count * (GU
我有 vector ,我想检索一个包含所有条目的 vector ,这些条目在所有输入 vector 中的任何地方都不重复。 #include int main() { std::vector a
我正在尝试为网站设置代码块的样式。容器 div 设置为垂直和水平溢出。问题是当它水平溢出时,斑马条纹背景颜色被剔除。我也尝试过使用背景图片,但它也剔除了它。为什么会这样?我该如何解决? 谢谢。 图片:
我应该在调用 Canvas 绘制方法之前剔除元素还是让 Canvas 处理剔除。我是否应该实现如下逻辑: if(circle.x+circle.radius>=0 || circle.x-circle
我刚刚发现 Azure Blob 存储上有 100 GB 的日志文件/失败请求日志,这些日志文件多年来一直在累积。是否有管理它们的工具或技术 - 目录结构很复杂,因此它不像按日期排序那么简单(我使用
我是一名优秀的程序员,十分优秀!