我一直试图解决这个问题,我一直在我的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:我尝试了多种方法来解决这个问题:
绝对没有任何效果。
答案 0 :(得分:0)
是的,这非常令人讨厌,Libgdx与它的坐标系不一致。就像font.draw()
从顶部向下绘制。改变迭代你在循环中绘制/绘制的方式,基本上你必须手动翻转它。因此,当j == 0
时,y将成为最高值,如果j == map.getHeight
y将成为最低值。然后在这些值内线性插值。如果你在循环中显示了什么,我可以帮助更多。