有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java管理大量要绘制的“对象”。

我试图用愚蠢的方式来构建一个游戏

我在很多测试中遇到的一个问题是,我发现很难处理很多抽签事件

情景: 我有一张地图,里面有50*50个正方形,用java的opengl绘制。 为了绘制所有这些,每一次,每一帧,我使用循环,这意味着每一帧有2500个单独的绘制。 我用这样的方式:

for(Y=0;Y<50;Y++){
for(X=0;X<50;X++){
box[Y][X].draw();
}
}

有更好的方法吗?这感觉不对! 有没有一种方法可以在第一次绘制后保留绘图、矩阵(或者你称之为:-)的输出?,这样我就可以把它加载到那个状态了


共 (1) 个答案

  1. # 1 楼答案

    有两种不同的策略。老实说,2500个要检查的对象“很多”,但实际上并没有那么多,这是可以优化到第n级的事情。通常,瓶颈在于draw调用本身,而不是遍历对象

    所以,在对象上迭代并进行平截头体检查。也就是说,测试对象是否完全在玩家的视野之外。如果是,就不要画画。如果你只画2D,这通常很简单。如果它是3D的,那么你需要一些更高级的数学,但仍然是简单的线性代数

    下一个通用方法是某种场景图或其他空间结构。这会很快变得复杂得多,但它在任何时候都能很好地处理任何角度的2D/3D内容。(谷歌目前是你的朋友,这个问题非常开放。)

    或者,如果你有一个简单的二维自上而下的正方形视图,你可以创建一个简单的二维数组,并根据相机坐标绘制地图的相关部分。(对摄像机坐标X和Y进行线性变换,将其缩小为阵列索引,然后绘制一个阵列坐标矩形。)

    我通常不会推荐差异化方法,除非有一些非常特殊的原因。跳转位置通常很难管理,也没用

    天空是极限,不知道更多细节,但尽量保持简单。制作游戏已经够难了