【问题标题】:libGdx not correctly displaying the color of a selected pixellibGdx 未正确显示所选像素的颜色
【发布时间】:2016-01-30 12:33:11
【问题描述】:

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

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

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

这是正在使用的图像:

这是我在地图上单击三个不同位置后的样子:

获取地图上点击的每个点的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 值时,这是我显示它们时得到的。图片好像被翻转了?

【问题讨论】:

  • 至少给我一个+1

标签: java libgdx desktop-application pixel


【解决方案1】:

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

您如何从 Color 对象中获取数据?问题可能就在那里。

我试过你的代码,它给了我一个错误。您需要调用准备功能。

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 个区域进行渲染。虽然输入是第一个。所以Y轴是反转的。这是一个关于坐标系的链接,可以帮助您更好地理解。

libgdx coordinate system differences between rendering and touch input

要对此进行测试,请在触摸的位置上画一些东西。看看它是否在你触摸的同一个地方绘制。

【讨论】:

  • 我确实事先打电话准备,但我认为这不是问题所在。我已添加到我的原始帖子中 - 检查 arbg 值时图像似乎翻转了。
猜你喜欢
  • 2015-11-23
  • 2012-01-17
  • 2011-08-06
  • 2012-09-30
  • 2016-08-30
  • 2022-11-13
  • 2014-05-19
  • 1970-01-01
  • 2020-11-02
相关资源
最近更新 更多