LibGdx纹理绘制为#getTextureData给出的反转

我一直在努力解决我在libgdx桌面程序上正确显示纹理的问题。

我有一个正交相机,当我设置为:

camera.setOrtho(false); 

我得到这个图像: 在此处输入图像描述

当我把它设置为:

 camera.setOrtho(true); 

我得到这个图像: 在此处输入图像描述

使用SpriteBatch绘制红色图像:

 batch.draw(texture, x, y, width, height); 

白色图像是根据其α值是否为1绘制的各个点绘制的。

 TextureData td = texture.getTextureData(); td.prepare; Pixmap map = td.consumePixmap(); for (int i = 0; i < map.getWidth(); i++) for (int j = 0; j < map.getHeight(); j++) if (new Color(map.getPixel(i, j)).a == 1) points.add(new Point(i, j)); 

以上是用于获取所有非透明像素的代码。 它们显示为白色图像,似乎与原始纹理相反。

但是,绘制的点和图像本身始终是彼此相反的。

有什么方法可以解决这个问题吗?

谢谢。

PS:我尝试过多种方法来解决这个问题:

  • 使用精灵并翻转它们
  • 使用TextureRegions并翻转它们

绝对没有任何效果。

是的,这非常令人讨厌,Libgdx与它的坐标系不一致。 像font.draw()从顶部向下绘制。 改变迭代你在循环中绘制/绘制的方式,基本上你必须手动翻转它。 因此当j == 0 y将成为最高值,如果j == map.getHeight y将成为最低值。 然后在这些值内线性插值。 如果你在循环中显示了什么,我可以帮助更多。