gpt4 book ai didi

java - LWJGL/OpenGL 的理想 Sprite 表数量

转载 作者:行者123 更新时间:2023-12-01 14:52:59 24 4
gpt4 key购买 nike

我正在使用 LWJGL 制作游戏,到目前为止我决定有 5 或 6 个 Sprite 表。它就像一个用于 block ,一个用于项目、对象等。通过这样做,我拥有了 Sprite 表,其中的 Sprite 密切相关,并且通常具有相同的大小(在 block 和项目的情况下)。但这是更好的方法吗?或者我应该把所有东西都放在一张 Sprite 表上,没有任何组织?

如果我的方法正确,还会出现另一个问题。例如,当你在 map 中时,我需要绘制 block 。但在方 block 上方,可能有电线和其他东西——它们位于单独的 Sprite 表中。然而,该信息存储在同一个数组中。所以通常我只是迭代一次,每次都绘制 block ,然后在其上绘制电线 - 每次迭代切换 Sprite 表两次。但我认为切换这些可能需要一些时间,所以也许运行两次,首先绘制所有 block ,然后再次迭代以绘制电线会更有趣?为了更改纹理,我使用了 SlickUtil 纹理类,它有一个绑定(bind)方法 - 非常易于使用。

最佳答案

没有“理想”;这些因素对您的需求很重要。

记住使用 Sprite 表的原因:因为在处理 2D 渲染时切换每个对象的纹理成本太高。因此,只要您不为渲染的每个 Sprite 切换纹理,您就已经在游戏性能方面处于领先地位。

您需要考虑的其他注意事项是:

  • 最低用户硬件规范。具体来说,您希望代码运行的 GL_MAX_TEXTURE_SIZE 的最小大小是多少? Sprite 表越大,硬件要求就越高,因为单个 Sprite 表必须是纹理。

    该值取决于硬件,但有一些一般要求。 OpenGL 3.3 至少需要 1024;几乎每 block GL 3.3 硬件都提供 4096。OpenGL 4.3 需要大量的 16384,这接近浮点纹理坐标容量的理论极限(假设您需要至少 8 位的子像素纹理坐标精度)。

    GL 2.1 的最低要求为 64,但人们拥有的任何实际 2.1 硬件都会提供 512 到 2048 之间的值。因此,请根据此选择 Sprite 表大小。

    <
  • 您正在渲染的内容。您希望能够从一张 Sprite 表中渲染尽可能多的内容。您要避免的是频繁纹理切换。如果你的世界被分成多个层,如果你可以将每个层的 Sprite 放到自己的工作表上,那么你就做得很好。任何硬件都不会因 20 次纹理变化而卡住;问题在于数以万计的人。

    最主要的是一次性渲染所有使用工作表的内容。不一定在同一个渲染调用中;您可以切换网格和着色器制服/固定功能状态。但是,在渲染完该工作表所需的所有内容之前,不应在这些渲染之间切换工作表。

关于java - LWJGL/OpenGL 的理想 Sprite 表数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14656987/

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