你好。我的游戏有一个简单的绘制系统,游戏会从资产层中收集元素,并将同一资产的所有精灵都组合到一个单独的顶点缓冲区中,以优化绘制。 当构建这些顶点时,我使用一个格式,它包含一个3D位置,并将这个位置的z元素设置为元素的负y位置(减去精灵偏移)。 这样,当绘制移动物体的精灵时,我可以使用gpu_set_depth(-thing.y) 并且可以正确地将这些精灵排序到这些静态顶点中。 然后,我会将整个东西绘制到一个表面上。

这一直是工作的,直到最近。 我升级到了新版LTS release 并且我在想是不是GM的绘制方式的某个隐秘的改变导致了这个问题。 我已经检查了我的代码,打印了所有的内容,并且什么都没发现。

现在,顶点仍然可以正确地排序它们彼此之间的,但不可以正确地排序它们和精灵之间。 重复一下,vertex_submit可以正确地排序其他vertex draw calls,而draw_sprite可以正确地排序其他sprite calls,但它们之间的排序就不正确了。

我已经检查了我能想到的所有GM设置,所有的gpu_ztest值,缓冲区是否冻结,绘制时是否设置随机的gpu值,阅读了所有的论坛帖子等等,但我仍然无法解决这个问题。 有没有人遇到过类似的问题? 有没有新设置我不知道的?