gpt4 book ai didi

java - 管理大量 "objects"进行绘制。

转载 作者:行者123 更新时间:2023-12-02 07:58:26 24 4
gpt4 key购买 nike

我试图愚弄构建游戏的方法。

我在许多测试中遇到的一个问题是我发现很难处理大量绘制事件。

场景:我有一张 map ,包含用java中的opengl绘制的50*50的正方形。为了每次、每一帧绘制所有这些,我使用 for 循环,这意味着每帧 2500 次单独绘制。我用这样的东西:

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

有更好的方法吗?这感觉不太对劲!有没有办法在第一次绘制后保留绘制、矩阵(或您所说的:-))的输出?,以便我可以将其加载到该状态?

最佳答案

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

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

下一个通用方法是某种场景图或其他空间结构。这很快就会变得更加复杂,但它在任何时间任何角度的任何 2D/3D 内容上都表现良好。 (Google 现在是你的 friend ,这个问题非常开放。)

或者,如果您有一个简单的正方形自上而下的 2D View ,您可以创建一个简单的 2D 数组并根据相机坐标绘制相关的 map 部分。 (对相机坐标 X 和 Y 进行线性变换,缩小为数组索引,然后绘制数组坐标的矩形。)

我通常不会推荐采用差异化方法,除非有一些非常特殊的原因。当你跳转位置时,通常很难管理并且毫无用处。

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

关于java - 管理大量 "objects"进行绘制。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9284682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com