4

我使用 libgdx 的渲染周期有问题,基本上我需要用方形纹理填充一个区域,并且该区域的最后一部分可能比纹理更小或形状不同,所以这意味着我需要渲染一个任意形状的四边形并在其上贴上纹理,切割我不需要的部分。

基本上这是我需要绘制的多边形的形式

我对如何做到这一点有点迷茫,到目前为止,我已经看到 PolygonRegion 和 PolygonSpriteBatch 可能会为我做这件事,但我有点担心实例化一个我只会在一个对象上使用的新重物.

有没有其他选择?也许是 Mesh 类,但我想确定。

4

2 回答 2

1

我建议使用 aMesh来准确定义您想要的区域。定义顶点并将它们映射到纹理坐标有点繁琐,但很高兴知道一些更高级别的 API(如 *Batch 位)下面发生了什么。此外,*Batch API 旨在共享跨多个对象上传单个纹理的权重,这听起来可能不适用于这种情况。(另一方面,即使 Batch 对象有点“重量级”,在实践中它们实际上也可能不是问题。)

要考虑的另一种方法是将对象渲染为方形网格,但为区域外的所有像素定义具有透明像素的纹理。(我假设非方形是您可以离线知道的,并且不是动态的。)

于 2012-12-07T22:26:18.003 回答
1

如果您为此目的实例化 PolygonSpriteBatch,这不是什么大问题。该对象主要包含缓冲几何的几何数据。当然,您需要关心正确的渲染顺序,在需要时调用 flush 或 end。

网格是另一种选择,但它可能需要更多的工作,因为您需要在那里手动提供顶点和纹理坐标。

从性能的角度来看,使用 Mesh 渲染一个精灵会稍微快一些。我不确定在您的情况下差异是否会以某种方式影响 fps。

编辑:忘了提一下,如果您使用 SpriteBatch 渲染一个对象,请不要使用默认构造函数,它会保留大量内存。

于 2012-12-07T19:52:16.517 回答