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将成为最低值。 然后在这些值内线性插值。 如果你在循环中显示了什么,我可以帮助更多。