libGdx无法正确显示所选像素的颜色

时间:2016-01-30 12:33:12

标签: java libgdx desktop-application pixel

我正在努力让我的程序识别它何时点击了一个大陆。 为此,我使用了:

new Color(texture.getTextureData().consumePixmap().getPixel(x, y));

x和y对应于鼠标各自的坐标。

这是使用的图像: enter image description here

这就是我点击地图上三个不同位置后的样子: enter image description here

在地图上点击每个点的arbg值,结果如下:

  • 在大陆:0.0,1.0,1.0,1.0
  • 在大陆的西部:0.0,1.0,1.0,1.0
  • 在大陆的西北部:0.0,0.0,0.0,0.0

从这些结果来看,虽然它们完全专注于不同的颜色,但第一和第二是难以区分的。此外,北上突然渲染所有arbg 0?

有谁知道为什么会这样?是否有解决方案来获得像素的颜色? 谢谢。

PS:此项目适用于桌面。 PPS:当检查每个像素的所有alpha值时,这是我显示它时得到的。好像图像被翻转了?

enter image description here

1 个答案:

答案 0 :(得分:1)

我注意到您的数据是arbg而不是rgba。你能说清楚吗?

如何从Color对象获取数据?可能存在问题。

我尝试了你的代码,它给了我一个错误。你需要调用prepare函数。

texture.getTextureData().prepare;  
Color color = new Color(texture.getTextureData().consumePixmap().getPixel(x, y));
System.out.println(color.toString());

上面的代码似乎有效。只要确保你试图在正确的纹理上找到颜色。

还要确保已导入正确的Color类。 (java.awt.Color不正确)

编辑:傻我。我刚想起来。 libGDX中的坐标系与输入的坐标系不同(如果我没记错的话),试试这个:

mouse.y = ScreenHeight - mouse.y;

渲染在坐标系的第4个区域完成。虽然输入是在第1。所以Y轴是相反的。这是一个关于坐标系的链接,可以帮助您更好地理解。

libgdx coordinate system differences between rendering and touch input

要测试此功能,请在触摸位置绘制一些内容。看看它是否在你触摸的同一个地方画画。

相关问题