【发布时间】:2016-05-08 16:51:00
【问题描述】:
我一直在尝试解决在我的 libgdx 桌面程序上正确显示纹理时遇到的问题。
我有一个正交相机,当我设置为:
camera.setOrtho(false);
当我将其设置为:
camera.setOrtho(true);
红色图像是用 SpriteBatch 绘制的:
batch.draw(texture, x, y, width, height);
而白色图像是从根据 alpha 值是否为 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:我尝试了多种方法来尝试解决此问题:
- 使用 Sprite 并翻转它们
- 使用 TextureRegions 并翻转它们
似乎没有任何效果。
【问题讨论】:
-
setOrtho方法有什么作用? -
请务必阅读github.com/libgdx/libgdx/wiki/Coordinate-systems,尤其是关于像素图的部分。
-
我所做的一切似乎都无法完成这项工作。我想要它做的就是知道我点击的屏幕上的点的颜色是什么,这似乎实际上是不可行的。
标签: java opengl libgdx textures