我在我的游戏中有一个 SpriteBatch,在其 batch.begin() 和 batch.end() 之间我绘制了一个大的静态背景图像和几个游戏精灵。我想剪切看到精灵的区域,我已经阅读过可以使用 ScissorStack 来完成。但问题在于 ScissorStack 似乎会裁剪发送到 GPU 的整个 SpriteBatch。这导致它剪切了我的游戏精灵和背景图像。
问:必须要有两个单独的 batch.begin() 和 batch.end() 周期,一个用于背景而没有剪切,另一个用于精灵而有剪切吗? 或者是否有一种方法可以仅剪切精灵而不使用 ScissorStack?
如果是前者,那么为了剪切一些精灵而将 SpriteBatch 刷新两次是否非常耗费资源,或者从性能方面考虑真的无需担心?
相关问题:最新源代码中的 calculateScissors() 方法具有比我在任何文档中看到的更多参数...
calculateScissors(camera、viewportX、viewportY、viewportWidth、viewportHeight、batchTransform、area、scissor)
当它们似乎重复 camera 的 viewport 和 area 信息,并且没有在任何文档中提到时,viewportX、viewportY、viewportWidth、viewportHeight 的目的是什么?
基本上,我很困惑......即使在测试每个参数不同值的行为之后仍然如此。任何建议都会好受。
问:必须要有两个单独的 batch.begin() 和 batch.end() 周期,一个用于背景而没有剪切,另一个用于精灵而有剪切吗? 或者是否有一种方法可以仅剪切精灵而不使用 ScissorStack?
如果是前者,那么为了剪切一些精灵而将 SpriteBatch 刷新两次是否非常耗费资源,或者从性能方面考虑真的无需担心?
相关问题:最新源代码中的 calculateScissors() 方法具有比我在任何文档中看到的更多参数...
calculateScissors(camera、viewportX、viewportY、viewportWidth、viewportHeight、batchTransform、area、scissor)
当它们似乎重复 camera 的 viewport 和 area 信息,并且没有在任何文档中提到时,viewportX、viewportY、viewportWidth、viewportHeight 的目的是什么?
基本上,我很困惑......即使在测试每个参数不同值的行为之后仍然如此。任何建议都会好受。
viewport.calculateScissors()
。 - noone