我的设置允许我向任意世界空间添加元素。一个元素有一个 (x,y) 坐标以及一些宽度和高度。
然后我使用视口(viewport)/相机渲染该世界的一个子部分。显然,我不想处理视口(viewport)之外的元素。
问题
- 确定哪些元素在视口(viewport)外部/内部的有效方法是什么?
现在我正在遍历每个元素并检查它的任何部分是否可见,但是向世界添加更多元素会使这一步变得非常慢。
- 是否有某种方法以某种方式为每个元素编制索引,以便仅考虑检查部分元素是否与视口(viewport)相交?
最佳答案
假设视口(viewport)移动而元素不移动:
有视口(viewport)内的图 block 列表。每次视口(viewport)移动时,您都会更新该列表。要从所述列表中添加/删除图 block ,请使用视口(viewport)对每个图 block 进行简单的交叉测试。由于视口(viewport)可能不会像绘制/处理这些图 block 那样频繁移动,因此您只能在该列表中绘制/处理图 block ,而不是考虑整个世界中的每个图 block 。
关于algorithm - 丢弃视口(viewport)外的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25043553/