我想知道如何获得整个当前屏幕的位图。我想检查所选像素的RGBA值。我的代码无法正常工作:
public class PixmapTest implements Screen
{
//(...)
private float getRedValue(int x, int y)
{
Pixmap pixmap = new Pixmap(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), Pixmap.Format.RGBA8888);
Color color = new Color();
Color.rgba8888ToColor(color, pixmap.getPixel(x,y));
pixmap.dispose();
return color.r;
}
@Override
public void render()
{
Gdx.gl.glClearColor(1f, 0f, 0f, 1f);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
System.out.println(getRedValue(50, 50));
}
}
在我看来, getRedValue 方法应返回 1.0 ,但返回 0.0 。我为无关紧要的问题道歉。我也是Libgdx和游戏开发的新手。
答案 0 :(得分:2)
最简单的方法是使用ScreenUtils包,例如
Image screenShot = new Image(ScreenUtils.getFrameBufferTexture());
答案 1 :(得分:1)
您所做的是创建了一个不包含任何内容的空白像素图。 Kumar Saurabh是对的,您需要拍摄该图像的屏幕截图以及获取像素值的功能。
你可以这样做
final Pixmap pixmap = new Pixmap(w, h, Format.RGBA8888);
ByteBuffer pixels = pixmap.getPixels();
Gdx.gl.glReadPixels(x, y, w, h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, pixels);
Color color = new Color();
Color.rgba8888ToColor(color, pixmap.getPixel(x,y));
pixmap.dispose();
return color.r;
希望这可能对你有用
答案 2 :(得分:0)
https://code.google.com/p/libgdx-users/wiki/Screenshots
这就是工作的方式
不要忘记获取PNG.java类,因为主要逻辑只在其中
此外,如果您正在使用LibGdx 0.9.8,这些类隐式包含在gdx.jar中