Opengl 两块瓷砖之间的扩散

Opengl 两块瓷砖之间的扩散,opengl,libgdx,Opengl,Libgdx,我要用libgdx做我的第一件事。这是一个平铺2D游戏。假设我有两种瓷砖:蓝色和绿色。这些是32x32像素的图像,覆盖游戏场上的一个单元格。我想能够创建一个瓷砖之间的过渡,如一个在右边的图像附加。蓝色和绿色并不意味着平铺中的所有像素都是相同的颜色,这只是定义了像素的纹理 我不是在问算法——我已经用JavaScript通过画布完成了。我只需要一些关于在libgdx中具体使用哪些类/技术/解决方案的说明 所以我需要从蓝色纹理中提取像素,然后在绿色纹理上绘制它们。有没有一种方法可以通过着色器或者直接

我要用libgdx做我的第一件事。这是一个平铺2D游戏。假设我有两种瓷砖:蓝色和绿色。这些是32x32像素的图像,覆盖游戏场上的一个单元格。我想能够创建一个瓷砖之间的过渡,如一个在右边的图像附加。蓝色和绿色并不意味着平铺中的所有像素都是相同的颜色,这只是定义了像素的纹理

我不是在问算法——我已经用JavaScript通过画布完成了。我只需要一些关于在libgdx中具体使用哪些类/技术/解决方案的说明

所以我需要从蓝色纹理中提取像素,然后在绿色纹理上绘制它们。有没有一种方法可以通过着色器或者直接从蓝色瓷砖的纹理中获取像素值来实现这一点

假设我已经将所有纹理(尚未计算过渡精灵)加载到
TextureAtlas
中。接下来应该上什么课才能达到预期的效果

更新:下面是我的代码当前的大致示例。我的gameScreen.render()方法看起来很简单:

batch.begin();
for (int x = 0; x < width; x++) {
        for (int y = 0; y < height; y++) {
                Sprite sprite = getFloorSpriteByCell(cells[x][y]);
                batch.draw(sprite, x * 32, y * 32);
        }
}
batch.end();
batch.begin();
对于(int x=0;x
getFloorSpriteByCell()
中,我在一些预加载的精灵之间进行选择,仅此而已,在一个奇特的gui中没有奇特的级别编辑


我不使用tilemaps,我只需要在渲染过程中在另一个纹理上绘制纹理的某些部分。

Welp,我完成了它,下面是它的外观:

无扩散:

带有扩散:

我想,代码本身太大了,而且是特定于项目的,所以无法在这里发布。以下是步骤(LibGDX中的实际类以粗体开头,以大写字母开头):

  • 选择要扩散到的图像的各个像素并放置 将它们转换为一个Pixmap(如果您在 TextureAtlas正如我所拥有的那样,使用一个PixmapTextureAtlas类从获取Pixmaps)
  • 将这些像素贴图绘制到纹理
  • 然后,像往常一样,将所有纹理绘制到一个SpriteBatch
  • 希望这将是有用的人。如果您需要实际代码,请与我联系