Java 等距深度排序

Java 等距深度排序,java,algorithm,isometric,Java,Algorithm,Isometric,我已经用Java编写了2D等轴测引擎的开始部分。我已经介绍了大部分的基础知识,比如平铺顺序和地图上的对象深度排序。然而,我遇到了一个问题,如果不把我的方法弄得一团糟,我似乎无法解决这个问题 问题是,在我的等轴测世界中,当对象基础所在的平铺在屏幕上渲染时,每个对象都会被渲染。但是,有些对象具有较大的高度(例如建筑),可以从未渲染的屏幕外区域延伸到渲染的屏幕区域,我无法检测到这一点,因为我的引擎目前依赖于存在的对象基础来渲染图像 我的问题是,如果渲染区域中存在高度值较大的对象,而其底部位于屏幕外区域

我已经用Java编写了2D等轴测引擎的开始部分。我已经介绍了大部分的基础知识,比如平铺顺序和地图上的对象深度排序。然而,我遇到了一个问题,如果不把我的方法弄得一团糟,我似乎无法解决这个问题

问题是,在我的等轴测世界中,当对象基础所在的平铺在屏幕上渲染时,每个对象都会被渲染。但是,有些对象具有较大的高度(例如建筑),可以从未渲染的屏幕外区域延伸到渲染的屏幕区域,我无法检测到这一点,因为我的引擎目前依赖于存在的对象基础来渲染图像

我的问题是,如果渲染区域中存在高度值较大的对象,而其底部位于屏幕外区域,我将如何检测该对象?我真的不想只是渲染整个地图(包括屏幕外区域),因为这是非常CPU密集的,所以我正在寻找一种算法或方法,允许我检测这个有问题的区域

编辑:更新问题以直观地表示以下问题


我想在我的对象上有一个方法“布尔值可见(矩形2D边界)”。在对对象进行排序和渲染已排序的对象之前调用此方法。

能否修改“平铺”的概念,使其包含类似“封套”的内容……一个划定最大高度和宽度的矩形?e、 g.当“大高度”对象被创建/指定给平铺时,您可以增加其封套的高度。
然后,您只需要渲染封套与屏幕重叠的平铺。

我的对象不是按这样的顺序排序的,而是由渲染循环以正确的顺序绘制的,因此无需使用深度排序方法,所以我不能在渲染对象之前设置它们的可见性。那就需要检查每个对象,确保每次执行渲染循环时,其宽度或高度不会与屏幕区域重叠,不是吗?它比渲染所有内容都要便宜…而且需要类似于此计算的内容才能实现您想要的结果,不是吗?您可以提前进行计算,例如,每当向互动程序添加内容/移动互动程序时。但我认为,从根本上来说,你必须做一些类似的事情来找出哪些瓷砖会扩散到屏幕上