gpt4 book ai didi

java - Libgdx:从多个纹理图集中渲染排序的 Sprite

转载 作者:行者123 更新时间:2023-11-29 08:54:30 25 4
gpt4 key购买 nike

我需要在屏幕上渲染 libgdx 中的对象(平均 20-30),全部按 Y 值排序,因此首先渲染具有最低 Y 值的 Sprite 。 (想想这个视角:http://i.stack.imgur.com/m1VQA.gif)

游戏使用纹理图集,每个图集的大小为2048*2048。

我目前有三本 map 集。一种用于可玩角色,一种用于 NPC 角色,一种用于动物/怪物。最终我们计划添加很多不同的对象、npc 集合等等,所以将所有 Sprite 混合到一个大图集中不是一种选择(在设计和硬件上都会受到很大限制)。

目前的渲染方式是先把屏幕上的物体每一帧按Y值排序,然后再绘制。这非常有效,除了这样的事实,可以发生许多纹理切换。

例如渲染:- 3 只动物- 2 个 NPC- 播放器- 1 个全国人大- 1 只动物- 1 个全国人大- 2 只动物,

需要 7 次纹理切换。这完全取决于对象在屏幕上的位置。

按图集对 Sprite 进行排序不是一种选择(首先绘制动物,然后是 NPC,然后是玩家),因为这会使 Y 排序变得不可能。

(我想到的第一件事是将纹理图集增加到 8192*8192,但是许多旧的台式机和移动设备将无法运行游戏。我想到的第二件事是某种深度缓冲,但如果可能的话,我不确定该怎么做。)

必须使用什么方法才能达到预期的结果(从多个纹理中排序 Sprite ),同时保持稳定的帧速率?有没有可行的 openGL 技巧来做到这一点?我是否应该担心每帧有 6-7 个纹理切换?

最佳答案

查看此链接,这是 libgdx 测试,测试的深度为 z,但您可以使用 y 轴

SortedSpriteTest

您需要使用比较器并对数组进行排序,这会明显降低游戏的性能。

关于java - Libgdx:从多个纹理图集中渲染排序的 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20971539/

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